c#wpf运行按钮单击新线程

时间:2015-12-13 17:03:00

标签: c# .net wpf multithreading

在我的WPF,.Net 4.5应用程序中,我有一些在用户交互后发生的长时间运行任务。

例如,如果用户单击某个按钮,那么在单独的线程上运行按钮操作的最佳方法是什么,以便用户在处理过程中可以继续与应用程序交互?

3 个答案:

答案 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的代码项目的文章。