6

バックグラウンド ワーカーを同期的に呼び出したい。backgroundworker が実行を完了したときにコードの実行を終了したい。BackgroundWorker の私のコードは次のとおりです。

{
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += DoWork;
    worker.RunWorkerCompleted += RunWorkerCompleted;
    ...
    worker.RunWorkerAsync();
    //wait for execution to end 
}

それを行う1つの方法は、実行が完了するまでステータスをもう一度確認することですが、他に良い方法はありますか?

4

3 に答える 3

18

コードを非同期で実行したくない場合は、BackgroundWorker...

{ 
    DoWork();
} 

ただし、絶対に にコードを含める必要がある明確な理由がない場合はBackgroundWorker、次を使用できます。

ManualResetEvent mre = new ManualResetEvent(false);
BackgroundWorker worker = new BackgroundWorker(); 
worker.DoWork += DoWork; 
worker.RunWorkerCompleted += (s, e) => 
                             {
                                 RunWorkerCompleted(s, e); 
                                 mre.Set();
                             };
// ... 
worker.RunWorkerAsync();
mre.WaitOne();
于 2012-08-31T10:38:59.713 に答える
0

後にあるコードは、メソッド//wait for execution to endに配置する必要があります。worker_RunWorkerCompleted

于 2015-01-21T13:25:34.517 に答える