2010-10-21 69 views
1

我在用戶控制級別使用後臺工作,並且工作正常。但是後來我將工作人員推到了其中一個輔助函數中。我的問題是它工作正常,直到我嘗試取消任務。在DoWork函數中,每次調用Web服務時都會調用Web服務,並在調用服務之前檢查取消等待,如果是,則應該打破循環。.Net背景工作者不取消

+0

發佈您的一些代碼。 – 2010-10-21 14:08:25

+0

你如何打電話給你的網絡服務? – 2010-10-21 14:12:11

+1

哪種語言? (這個解決方案在不同的.NET語言中有不同的語法,例如在VB.NET中,你是否用「WithEvents」聲明你的BackgroundWorker,然後聲明你的後臺工作者入口點爲Handles(me).RunWorkerCompleted?...,以便它將實際上得到它的停止事件。) – 2010-10-21 14:15:56

回答

4

1)確保您已將BackgroundWorkerWorkerSupportsCancellation屬性設置爲True

2)確保您正確地處置任何Web服務引用。 (只是因爲這是你應該做的任何事情)

你可能也想通過BackgroundWorker,並驗證取消時,取消掛起的屬性設置爲true。

如果這些東西都不起作用,那麼您可能需要考慮顯示用於創建和啓動背景工作器的代碼以及任何事件代碼(DoWork,RunWorkerCompleted等)。

EDIT(這威爾進行編輯得到移除)

你可能也想看看這個link

從這個鏈接獲得的一個重要的事情是,即使您取消,如果工作人員已經在工作(IE:通過DoWork處理),它可能會錯過取消掛起並繼續工作。

+0

我正在執行步驟1和步驟2,我正在使用關鍵字。但是我發現即使去CancelAsync函數,取消暫掛屬性也沒有設置爲true。 – Abain 2010-10-22 14:28:33

+0

嗯。我看到當我編輯我的答案時,我的編輯就沒有了。現在添加我的編輯。 – 2010-10-22 14:35:49