2011-12-02 71 views
0

我有一个解析函数,它解析一个文件需要很长时间。 我想在解析文件的函数中显示进度条。 我添加toolstripprogressbar并设置其属性。 但是我不知道它们是如何同步运行的。.net statusstrip进度条开始进度

我想要做这样的事情:

// progressBar start progress 
parseFile(); 
// progressBar finish progress 

我搜索一下,for循环和线程用于这一点,但他们不是为我很有帮助。 我该怎么做?

回答

4

您确实需要在后台线程中运行长时间运行的操作,后台线程可以定期向GUI线程报告它正在做什么(并在此过程中更新进度条)。

我希望各位能够了解后台工作,这里http://www.dotnetperls.com/backgroundworker

MSDN页面在这里:http://msdn.microsoft.com/en-us/library/8xs8549b.aspx

您还可以看到一个非常相似的,所以问题在这里:C# Winform ProgressBar and BackgroundWorker

+0

是的,你是对的我认为这是关于我的问题。我会搜索并给你反馈。感谢您的回复 – user983924

1

如果你想显示进度,那么您必须以某种方式将您的长进程分为两个阶段或已处理的数据间隔 - 并且在处理完阶段/间隔之后增加进度条位置。

为3个阶段实施例: 设置进度最大值为3。 第1阶段)打开和读取文件到存储器 - 设置progressBar.Value到2 - 完成这个 第2阶段)解析文件之后设置progressBar.Value 1之后 阶段3)额外的处理? - 之后设置progressBar.Value为3 = Max =进程已完成。

文件大小的示例: 让我们想象一下,您可以测量到目前为止,您已经解析了哪部分文件,以字节为单位。然后,首先将progressBar.Max设置为以字节为单位的文件大小。然后,在每个处理过的来自文件的字节块之后,您应该将progressBar.Value设置为已处理的字节数。

第二种方法通常更精确,progressBar运行更平稳,但并不总是可以使用它。