2011-01-27 5 views
6

簡単な質問 - 2人のバックグラウンドワーカーを同時に実行することは可能ですか?私は複数のバックグラウンドワーカー+ 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

なぜワーカー1とワーカー2に対して別々のdoWorkデリゲートを作成しないのですか? – CACuzcatlan

+0

例のために、それは必要ではありませんでした。 – MadBoy

+0

写真の例をありがとう –

関連する問題