按下按钮后跟随功能。
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格式。
答案 0 :(得分:4)
使用Dispatcher
txbDebug.Dispatcher.Invoke(new Action(() =>
{
txbDebug.Text = "completed";
}));
答案 1 :(得分:2)
我不希望您想要使用新的Async 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";
});
}