首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件实时清点时,如何上报给用户?

文件实时清点时,如何上报给用户?
EN

Stack Overflow用户
提问于 2016-03-12 11:07:43
回答 1查看 37关注 0票数 0

在后台工作事件中,我调用了这个方法:

代码语言:javascript
复制
public List<string> FindLines(string DirName, string TextToSearch)
    {
        int counter = 0;
        List<string> findLines = new List<string>();
        DirectoryInfo di = new DirectoryInfo(DirName);
        List<FileInfo> l = new List<FileInfo>();
        backgroundWorker1.ReportProgress(0, "Counting Files");
        CountFiles(di, l);
    }

和CountFiles方法:

代码语言:javascript
复制
private void CountFiles(DirectoryInfo di, List<FileInfo> l)
        {
            try
            {
                l.AddRange(di.EnumerateFiles());
            }
            catch
            {

            }

            try
            {
                IEnumerable<DirectoryInfo> subDirs = di.EnumerateDirectories();
                if (subDirs.Count() > 0)
                {
                    foreach (DirectoryInfo dir in subDirs)
                        CountFiles(dir, l);
                }
            }
            catch 
            {
                string err = "";
            }
        }

这是progresschanged evet:

代码语言:javascript
复制
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.UserState.ToString() == "Counting Files")
                label2.Text = e.UserState.ToString();
        }

计算文件的时间大约需要2-4秒。在这一次,我向用户显示了一条消息,它现在正在计算文件数,但是如果我想在label3上显示文件的实时计数,我该怎么做呢?我想我需要以某种方式从CountFiles方法内部报告进度?

EN

回答 1

Stack Overflow用户

发布于 2016-03-12 12:41:32

将第一个CountFiles调用更改为:

代码语言:javascript
复制
 CountFiles(di, l, count=> {
                backgroundWorker1.ReportProgress(count, "Files Found...");
            });

将CountFiles方法更改为:

代码语言:javascript
复制
 private void CountFiles(DirectoryInfo di, List<FileInfo> l, Action<int> CurrentCount) {
           ...
            foreach (DirectoryInfo dir in subDirs)
                CountFiles(dir, l, currentCount=> {
                    CurrentCount(l.Count);

                });
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35953277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档