2013-08-27 45 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