2011-01-27 86 views
6

快速問題 - 是否有可能有兩個後臺工作人員同時運行?我似乎記得嘗試過這一次,並得到一個錯誤,並似乎還記得閱讀,你只能有一個......我找不到另一個線程,談論有多個明確,雖然..多背景工作者+ C#

任何想法非常感謝!

乾杯

回答

18

,你喜歡和同時運行,您可以有很多的背景工人。示例:

var worker1 = new BackgroundWorker { WorkerReportsProgress = true }; 
var worker2 = new BackgroundWorker { WorkerReportsProgress = true }; 
DoWorkEventHandler doWork = (sender, e) => 
{ 
    for (int i = 0; i < 10; i++) 
    { 
     var progress = (int)((i + 1) * 100.0/10); 
     var worker = (BackgroundWorker)sender; 
     worker.ReportProgress(progress); 
     Thread.Sleep(500); 
    } 
}; 
worker1.DoWork += doWork; 
worker2.DoWork += doWork; 
worker1.ProgressChanged += (sender, e) => 
{ 
    label1.Text = e.ProgressPercentage.ToString(); 
}; 
worker2.ProgressChanged += (sender, e) => 
{ 
    label2.Text = e.ProgressPercentage.ToString(); 
}; 

worker1.RunWorkerAsync(); 
Thread.Sleep(1000); 
worker2.RunWorkerAsync(); 
+0

爲什麼不爲worker1和worker2創建單獨的doWork委託? – CACuzcatlan 2011-02-12 00:49:47