作者 主題: BackgroundWorker 取消的問題  (閱讀 6649 次)

0 會員 與 1 訪客 正在閱讀本文。

keni

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
BackgroundWorker 取消的問題
« 於: 2008-05-29 14:02 »
我一直無法取消, 它的 ISbusy= True....

    Private Sub Button5_Click
        dt = DateTime.Now
        TextBox1.Text += (dt.ToLongTimeString) + vbCrLf
        BackgroundWorker2.WorkerSupportsCancellation = True
        BackgroundWorker2.RunWorkerAsync(8000)
    End Sub

    Private Sub BackgroundWorker2_DoWork
        System.Threading.Thread.Sleep(e.Argument) '15 sec
    End Sub

    Private Sub Button7_Click
        If BackgroundWorker2.IsBusy = True Then
            BackgroundWorker2.CancelAsync()   ---> 有錯嗎
        End If
    End Sub


還是因為System.Threading.Thread.Sleep  ...無法做取銷

elleryq

  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
回覆: BackgroundWorker 取消的問題
« 回覆 #1 於: 2008-05-29 16:40 »
以下擷取自 Help:

當您呼叫 CancelAsync 時,背景工作方法就會停止執行並結束。背景工作程式碼應該定期檢查 CancellationPending 屬性,查看它是否已經設為 true。

Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org

keni

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
回覆: BackgroundWorker 取消的問題
« 回覆 #2 於: 2008-05-29 23:59 »
以下擷取自 Help:

當您呼叫 CancelAsync 時,背景工作方法就會停止執行並結束。背景工作程式碼應該定期檢查 CancellationPending 屬性,查看它是否已經設為 true。



似乎無法解決我的問題

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: BackgroundWorker 取消的問題
« 回覆 #3 於: 2008-06-03 11:18 »
他的意思是說你的程式碼自己要去檢查 CancellationPending 屬性,然後自己做取消的動作
單單只做 CancelAsync() 並不會讓 BackgroundWorker 自動停止