在Parallel之后引发事件.完成工作
本文关键字:工作 事件 Parallel 之后 | 更新日期: 2023-09-27 18:08:19
按下按钮后调用以下函数
Task.Factory.StartNew(() =>
{
Parallel.For(0, cyclesCount, i => DoWork(i));
if (OnJobCompleted != null)
OnJobCompleted(this, EventArgs.Empty);
});
代码中还有
void ladder_OnJobCompleted(object sender, EventArgs args)
{
txbDebug.Text = "completed";
}
我知道txbDebug.Text = "completed";
必须被调用,因为我在不同的线程上引发事件。但我不知道如何调用它。此事件位于wpf格式中。
使用Dispatcher
txbDebug.Dispatcher.Invoke(new Action(() =>
{
txbDebug.Text = "completed";
}));
我不希望你想要使用新的异步CTP,但是如果你好奇如何使用c# 5中提出的新的async
和await
关键字,那么考虑下面的例子。没有比这更优雅的了。
void async YourButton_Click(object sender, RoutedEventArgs args)
{
txbDebug.Text = await Task<string>.Factory.StartNew(
() =>
{
Parallel.For(0, cyclesCount, i => DoWork(i));
return "complete";
});
}