假设我不是在GUI线程中执行计算绑定任务,而是在单独的线程中执行。我计算了一些反映用户在GUI中所做更改的数据。我需要仅为最后一个用户操作计算更改,因此我只需要一个额外的线程,并在每次用户进行新的更改时取消它。
我怎么能很好地对GUI线程说工作线程中的计算完成了?是否有某种回调或事件,因为使用计时器的任务并不好。感谢。
编辑:我还调查过要从backgroundworker返回一些数据,只需要使用DoWorkEventArgs的Result字段。
答案 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();