-4

我有一个后台工作人员,它通过 C# 函数生成 Excel 文件GenerateExcel()。在 GenerateExcel() 函数中,我使用进度条来更新状态。但是,它抛出了一个异常,我无法修改 GUI 控件。知道代码中的错误可能是什么吗?

BackgroundWorker backgroundWorker1 = new BackgroundWorker();

backgroundWorker1.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs args)
{
    GenerateExcel(FileName, 1);
});

backgroundWorker1.RunWorkerAsync();

谢谢

4

3 回答 3

1

您需要创建 BackgroundWorker.ReportProgress 事件的实例。然后更新该方法中的进度条。

BackgroundWorker.ReportProgress += new ReportProgressEventHandler()....

(语法可能不正确,但你明白了)

于 2013-08-27T12:25:00.483 回答
0

希望你得到 - System.InvalidOperationException - 跨线程操作无效 - 异常 - 这篇文章可能会帮助你 - http://www.dotnetthoughts.net/system_invalidoperationexception_cross_thread_operation_not_valid/

于 2013-08-27T12:25:48.060 回答
0

您需要控制 Backgroundworker 事件ProgressChanged,并且在 main 方法中,不要更改进度条,而是使用以下命令:

BW1.ReportProgress(iProg)

在您的事件中,修改 Progressbar 以检索以下值ProgressChangedEventArgs

ProgressBar1.Value = e.ProgressPercentage
于 2013-08-27T12:26:02.533 回答