在我的WPF,.Net 4.5应用程序中,我有一些在用户交互后发生的长时间运行任务。
例如,如果用户单击某个按钮,那么在单独的线程上运行按钮操作的最佳方法是什么,以便用户在处理过程中可以继续与应用程序交互?
答案 0 :(得分:2)
对于长时间运行的任务,您可以使用async / await。它旨在取代后台工作者构造,但完全取决于个人偏好。
这是一个例子:
private int DoThis()
{
for (int i = 0; i != 10000000; ++i) { }
return 42;
}
public async void ButtonClick(object sender, EventArgs e)
{
await Task.Run(() => DoThis());
}
这样的事情在任务完成时不会锁定UI。
答案 1 :(得分:1)
使用BackgroundWorker课程。您需要将代码移动到worker并从按钮调用它的Run函数。 Here is a nice answer on StackOverflow on how to use it.
答案 2 :(得分:0)
一种方法是使用TPL(任务并行库)。以下是有关Using TPL in WPF的代码项目的文章。