如何取消以下工作?
workerLoad = new BackgroundWorker();
workerLoad.WorkerSupportsCancellation = true;
workerLoad.DoWork += (o, ea) =>
{
//Thread.Sleep(100);
Dispatcher.BeginInvoke((Action)(() => BindWorkarea(selectedFolder,false)));
//Dispatcher.Invoke((Action)(() => workareaListView.DataContext = pages));
};
workerLoad.RunWorkerCompleted += (o, ea) =>
{
Mouse.OverrideCursor = null;
};
workerLoad.RunWorkerAsync();
我没有循环运行来检查取消状态并设置cancelAsync
if (workerLoad.CancellationPending)
{
e.Cancel = true;
break;
}
DoWork,只有一种循环文件并使用调度程序添加到屏幕的方法。
答案 0 :(得分:0)
你正在一个功能中完成所有工作......
您需要将工作分解为循环并将循环置于BackgroundWorker
内,然后在循环内部通过Dispather
更新UI。这样你就有机会随意分解这个过程。