2011-11-18 77 views
1

如何在WP7中停止/中止/中斷線程?在Windows Phone 7中停止線程

更新: 想出了以下解決方案(隊列事件是消費者/生產者Q的一部分,實際上並不需要退出線程:)):

protected override void Dispose(bool disposing) 
{ 
    base.Dispose(disposing); 
    //GP-HACK:Stoping the thread. 
    stopExecutorThread = true; 
    operationQueueNonEmptyEvent.Set(); 
} 

private volatile bool stopExecutorThread = false; 

public void Run() 
{ 
    do 
    { 
     operationQueueNonEmptyEvent.WaitOne(); 

     if (stopExecutorThread) 
      return; 

     .... 
    } 
} 

感謝馬特!

非常感謝!

+0

一般來說,即使調試線程也不是直截了當的。考慮記錄一些調試信息來幫助調試。 –

+0

真的嗎?你什麼意思 ?我總是使用調試器來處理併發事件(凍結/解凍,斷點等)。有什麼問題可以解決? – Grigory

回答

2

沒有辦法停止特定的線程。如果你真的需要停止某個線程中的runnign,那麼你需要與線程中運行的代碼進行通信,並告訴它停止執行任何操作。沒有內置的方式來做到這一點。

或者考慮一個BackgroundWorker,因爲這支持請求取消。

+1

值得注意的是,調用[CancelAsync](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.cancelasync(v = vs.95).aspx)只會取消BackgroundWorker如果它還沒有開始運行,即它仍在執行。 – ajmccall