【发布时间】:2011-07-24 05:28:29
【问题描述】:
我如何知道任务已完成?我想要BackGroundWorker 中的RunWorkerCompleted 事件。
谢谢
【问题讨论】:
标签: c# multithreading c#-4.0 task
我如何知道任务已完成?我想要BackGroundWorker 中的RunWorkerCompleted 事件。
谢谢
【问题讨论】:
标签: c# multithreading c#-4.0 task
你可以使用ContinueWhenAll,所以当所有进程完成时你会通知。
Task.Factory.ContinueWhenAll(myTasks, _ => OnAllTasksFinished());
private void OnAllTasksFinished()
{
MessageBox.Show("Finished!");
}
【讨论】:
我正在从任务中调用多线程方法(最后)
模式多线程方法:
private void SomeEventHandler(object sender, EventArgs e)
{
MethodInvoker method = delegate
{
uiSomeTextBox.Text = "some text";
};
if (InvokeRequired)
BeginInvoke(method);
else
method.Invoke();
}
您可以像在 bacroundWorker 中一样安全地使用 WFA
当 BackGrounWorker 中的算法返回时,他会生成关于工作结束的事件。但是线程对象仍然可以继续存在。是内奇点 Windows 和 CLR,——死后可能存在一段时间的线程。
【讨论】: