c# – 如何等待BackgroundWorker完成,然後退出控制檯應用程式
class Program { private static BackgroundWorker worker = new BackgroundWorker(); private event EventHandler BackgroundWorkFinished; static void Main(string[] args) { worker.DoWork += worker_DoWork; worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.ProgressChanged += worker_ProgressChanged; worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true; Console.WriteLine("Starting Application..."); worker.RunWorkerAsync(); Console.ReadKey(); } static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { Console.WriteLine(e.ProgressPercentage.ToString()); } static void worker_DoWork(object sender, DoWorkEventArgs e) { Console.WriteLine("Starting to do some work now..."); int i; for (i = 1; i < 10; i++) { Thread.Sleep(1000); worker.ReportProgress(Convert.ToInt32((100.0 * i) / 10)); } e.Result = i; } static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Console.WriteLine("Value Of i = " + e.Result.ToString()); Console.WriteLine("Done now..."); } }
的帖子,瞭解如何在您的BackgroundWorker和主執行緒之間進行通訊.
基本上,您必須使用您在DoWork結束時設定的事件來表明DoWork已完成.然後在主執行緒中的那個事件上WaitOne().
http://stackoverflow.com/questions/3767827/how-to-wait-for-backgroundworker-to-finish-and-then-exit-console-application