3 回答
TA贡献1850条经验 获得超11个赞
您可以使用 aWaitHandle来保持与工作线程的同步。
private ManualResetEvent _canExit = new ManualResetEvent(true);
private DoBackgroundWork()
{
_canExit.Reset();
backgroundWorker1.RunWorkerAsync(_canExit);
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
// This foreground thread will keep the process alive but allow UI thread to end.
new Thread(()=>
{
_canExit.WaitOne();
_canExit.Dispose();
}).Start();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
ManualResetEvent mre = (ManualResetEvent )e.Argument;
// do your work.
mre.Set();
}
如果您有多个后台线程要等待,请管理一个WaitHanlde集合并使用它WaitHandle.WaitAll来防止进程退出。
- 3 回答
- 0 关注
- 195 浏览
添加回答
举报