如何在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();

感谢

如何在C#中通过Backgroundworker更新进度条

您需要创建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