我正在運行一個BackgroundWorker線程來執行耗時的任務。耗時的任務在另一個班上。我需要將在BackgroundWorker上運行的這個單獨的類的進度傳遞迴Main Form1類。我不知道如何解決這個問題。請提供建議。先謝謝你。c#BackgroundWorker調用另一個類和ProgressReport的DoWork方法
**// Main Form1 UI Class**
public void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
//e.Argument always contains whatever was sent to the background worker
// in RunWorkerAsync. We can simply cast it to its original type.
DataSet ds = e.Argument as DataSet;
this.createje.ProcessData(this.ds);
}
private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Minimum = 0;
this.progressBar1.Maximum = CreateJE.max;
this.progressBar1.Value = e.Recno;
}
**//Other Class called CreateJE**
public void ProcessData(DataSet ds)
{
//Do time consuming task...
for (int i = 1; i <= 10; i++)
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
**//How do I report progress back to the Main UI?**
//worker.ReportProgress(i * 10);
}
}
}
我喜歡你的第一個建議。你能提供一個代碼示例嗎? – Shazam 2012-08-13 15:11:05