如何告诉 WPF UI 线程 worker 已经完成它的工作?

How to tell WPF UI thread that worker has finished its job?

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

如何向 GUI 线程说工作线程中的计算已完成?是否有某种回调或事件,因为对任务使用计时器并不好。谢谢

编辑:我还调查了 return 来自 backgroundworker 的一些数据,只需要使用 DoWorkEventArgs 的结果字段。

0.Add 以下使用:使用 System.ComponentModel;

1.Declare background worker:

private readonly BackgroundWorker worker = new BackgroundWorker();

2.Subscribe 到事件:

worker.DoWork += worker_DoWork;

worker.RunWorkerCompleted += worker_RunWorkerCompleted;

3.Implement两种方法:

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.Run worker 在您需要时异步。

worker.RunWorkerAsync();