如何告诉 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();
假设我不在 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();