我已经编写了一个示例控制台应用程序,以使用在此处发布的其中一个示例在Stackoverflow中测试backgroundworker。我有一个背景工作,它以主要方法开始,但在操作过程中结束,如果我按下回车键,因为我在主要方法中写了一个console.readkey。但我希望它能够等到背景工作者完成作业然后退出应用程序。这是我的代码。如何等待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...");
}
}
为什么你然后运行后台进程异步?这似乎是你想要它同步运行... – 2010-09-22 10:30:13
如何同步运行它..? – 2010-09-22 11:04:15
可能重复的[如何等待BackgroundWorker取消?](http://stackoverflow.com/questions/123661/how-to-wait-for-a-backgroundworker-to-cancel) – 2014-03-01 10:20:28