我知道有很多關於體重指數的問題,但我仍然覺得有必要問這個問題/並不覺得我得到了我想要的信息......或者有人必須向我解釋這個問題我可以理解的方式...我看到沒有實際的目的打電話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()
更好的目的是什麼?