【发布时间】:2014-01-27 22:29:20
【问题描述】:
我正在创建一个使用 TextBox 和 ProgressBar 的程序,每次 TextBox 中的文本更改或 ProgressBar 执行一个步骤时,GUI 都会冻结,在操作完成之前我无法执行任何操作。
我知道我需要在不同的线程上运行它们,但我搜索了整个网络并没有找到适合我的方法。
这是一个例子,当我写一个文件,我需要得到它的进度:
for (int l = 0; l < newfile.Length; l++)
{
vfswriter.Write(newfile[l]);
double percentage = ((double)l / (double)newfile.Length * 100);
this.progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
}
这是我更改文本时的示例:
this.richTextBox1.Text = "Installing patch : ";
任何帮助将不胜感激。
【问题讨论】:
-
我没有看到使用 BackgroundWorker 的尝试。这可能会有所帮助。
-
我试过了,但我的代码是这样的:我调用了一个方法,并且在该方法中它使用了文本和 backgroundworker
-
附带说明 - 您可能会丢失
percentage变量并将进度条更新编码为this.progressBar1.Value = l * 100 / newfile.Length;。整数数学可以满足您的需求。
标签: c# winforms progress-bar backgroundworker