如何告诉WPF UI线程工作者已完成其工作?

时间:2015-03-23 12:34:00

标签: c# wpf events backgroundworker

假设我不是在GUI线程中执行计算绑定任务,而是在单独的线程中执行。我计算了一些反映用户在GUI中所做更改的数据。我需要仅为最后一个用户操作计算更改,因此我只需要一个额外的线程,并在每次用户进行新的更改时取消它。

我怎么能很好地对GUI线程说工作线程中的计算完成了?是否有某种回调或事件,因为使用计时器的任务并不好。感谢。

编辑:我还调查过要从backgroundworker返回一些数据,只需要使用DoWorkEventArgs的Result字段。

1 个答案:

答案 0 :(得分:1)

0.添加以下内容:using System.ComponentModel;

1.Declare background worker

private readonly BackgroundWorker worker = new BackgroundWorker();

2.订阅活动:

worker.DoWork += worker_DoWork;

worker.RunWorkerCompleted += worker_RunWorkerCompleted;

3.实施两种方法:

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
   // run all background tasks here
}

private void worker_RunWorkerCompleted(object sender, 
                                       RunWorkerCompletedEventArgs e)
{
  //update ui once worker complete his work
}

4.无论何时需要,运行工作人员都会异步。

worker.RunWorkerAsync();