2011-11-18 75 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