2013-08-27 46 views
-4

我有一个通过C#函数GenerateExcel()生成Excel文件的Backgrounder worker。在GenerateExcel()函数中,我使用进度条来更新状态。但是,它引发了一个异常,我无法修改GUI控件。 任何想法可能是代码中的错误?如何通过C#中的Backgroundworker更新进度条?

BackgroundWorker backgroundWorker1 = new BackgroundWorker(); 

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

backgroundWorker1.RunWorkerAsync(); 

感谢

+4

设法找到后台工作。无法找到使用示例。这是官方的类文档http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx正确的在1.4k代表你应该知道更好。这个问题是污染。所以当你输入问题标题时甚至会提出类似的问题。懒惰。 – Gusdor

+1

我刚刚注意到您的个人资料上写着“我不喜欢的内容:当我提出问题时,人们用RTFM做出回应”。 HAH。欢迎来编程。 – Gusdor

+0

@古斯多,我很抱歉,我试图按照建议实施这么多,但我无法得到它的工作。我一点都不安,你知道。现在我已经开始工作了,所以非常感谢你指出。 – Kiran

回答

1

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

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

(语法可能不正确,但你的想法)

0

你需要控制BackgroundWorker的事件ProgressChanged和主要方法里面,而不是改变的进度,用这个:

BW1.ReportProgress(iProg) 

而在你的情况下,修改进度retriving值在ProgressChangedEventArgs

ProgressBar1.Value = e.ProgressPercentage