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

本文关键字:线程 新线程 运行 按钮 c#wpf | 更新日期: 2023-09-27 18:26:46

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

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

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

对于长时间运行的任务,可以使用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。

使用BackgroundWorker类。您需要将代码移动到worker,并从按钮调用它的Run函数。以下是关于StackOverflow如何使用它的一个很好的答案。

一种方法是使用TPL(任务并行库)。这是一篇关于在WPF中使用TPL的代码项目的文章。