如何在C#中通过Backgroundworker更新进度条
本文关键字:更新 Backgroundworker | 更新日期: 2023-09-27 18:29:06
我有一个Backgrounder工作程序,它通过C#函数GenerateExcel()
生成Excel文件。在GenerateExcel()函数中,我使用进度条来更新状态。然而,它抛出了一个异常,即我无法修改GUI控件。知道代码中的错误是什么吗?
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs args)
{
GenerateExcel(FileName, 1);
});
backgroundWorker1.RunWorkerAsync();
感谢
您需要创建BackgroundWorker.ReportProgress事件的实例。然后更新该方法中的进度条。
BackgroundWorker.ReportProgress += new ReportProgressEventHandler()....
(语法可能不正确,但你已经明白了)
希望您得到-System.InvalidOperationException-跨线程操作无效-Exception-这篇文章可能会帮助您-http://www.dotnetthoughts.net/system_invalidoperationexception_cross_thread_operation_not_valid/
您需要控制Backgroundworker事件ProgressChanged
,并且在main方法中,不用更改进度条,而是使用以下命令:
BW1.ReportProgress(iProg)
在您的事件中,修改Progressbar以检索ProgressChangedEventArgs
:中的值
ProgressBar1.Value = e.ProgressPercentage