我知道有很多关于体重指数的问题,但我仍然觉得有必要问这个问题/并不觉得我得到了我想要的信息......或者有人必须向我解释这个问题我可以理解的方式...我看到没有实际的目的打电话BW.CancelAsync()
,除非它将CancellationPending标志设置为true ...BackgroundWorker为什么要调用CancelAsync()?
所以基本上,我的问题是:为什么在BW上拨打CancelAsync()
?
或者以不同的方式提出同样的问题:我的代码是以这种方式设置的,这是好的还是我应该在那里绝对叫CancelAsync()
? CancelAsync()
服务该代码将无法处理的目的是什么?
这有点令人沮丧,但你总得到一个主意。
void BW_DoWork(object sender, DoWorkEventArgs e)
{
Process_Status LastProcessed = Process_Status.None;
foreach(Iteration iter in Iterations)
{
//global form flag set when user presses CANCEL AND ROLLBACK button...
if (!this.IsRollBack)
{
try
{
//DO SOME WORK HERE
LastProcessed = Process_Status.SomethingSucceeded;
}
catch
{
this.LastFail = Process_Status.SomethingFailed;
//this, for me, cancels the thread and runs RunWorkerCompleted...
e.Cancel = true;
}
}
else
{
this.LastFail = LastProcessed;
//this, for me, cancels the thread and runs RunWorkerCompleted...
e.Cancel = true;
}
}
}
然后在RunWorkerCompleted ...
void BW_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
switch(this.LastFail)
{
//DO SOMETHING MEANINGFUL HERE BASED ON GLOBAL STATUS...
}
}
}
有人可以帮助我了解的CancelAsync()
更好的目的是什么?