我正在使用BackgroundWorker
來處理長時間運行的外部操作。但是用戶可以選擇取消後臺操作。由於我的自定義BackgroundWorker支持Thread.Abort()
,因此當用戶從主線程觸發Cancel時,我所做的全部爲BackgroundWorker.Abort()
。線程終止建議需要
但是線程並未實際終止,它仍在完成外部進程。有什麼方法可以立即終止線程嗎?
我沒有在外部處理控制,所以不能發送任何標誌的做法一樣while (checkThreadCancelled){}
。
下面是我的僞代碼。
任何幫助?
AbortableBackgroundWorker _bgWorker;
void MainThreadFunc()
{
_bgWorker = new AbortableBackgroundWorker();
_bgWorker.DoWork += new DoWorkEventHandler(bg_DoWork);
_bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler
(bg_RunWorkerCompleted);
_bgWorker.WorkerSupportsCancellation = true;
_bgWorker.RunWorkerAsync();
}
void bg_DoWork()
{
//Call external dll function for processing
}
void bg_RunWorkerCompleted()
{
//Process completed code
}
void CancelBgProcess()
{
if(_bgWorker != null)
_bgWorker.Abort();
}