バックグラウンドワーカーを使用して別のスレッドを実行していますが、 の呼び出し後にプログラムが停止しているようRunWorkerAssync()
です。
すべてを設定した場所は次のとおりです。
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = false;
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(bw_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
worker.RunWorkerAsync();
console.writeline("I'm Done!");
そして、ここに私のbw_DoWork
機能があります:
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(5000);
}
そして私bw_RunWorkerCompleted
とbw_ProgressChanged
:
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
}
else if (!(e.Error == null))
{
}
else
{
}
}
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
私が抱えている問題は、確かに、実行後 5 秒までコンソール出力が得られないことです。スリープをより長い/より短い時間に変更すると、それに応じてコンソール出力の待機が調整されます。
バックグラウンド ワーカーを使用して、プログラムの実行中にタスクを別のスレッドに移動できるようにするのがポイントではありませんか? または、何か不足していますか?
ありがとう