2012-11-02 117 views
-1

我的應用程序中有很多線程,我該如何停止它們中的一個線程?如果我使用Thread.Sleep()它會停止整個應用程序,我只想停止一個線程。我怎麼做?我正在使用C#。只停止一個線程

+1

如果Thread.Sleep運行在自己的線程上,它不應該暫停程序。你能顯示一些代碼嗎? –

+0

我建議你閱讀這個免費的電子書:[Albahari](http://www.albahari.com/threading/) –

+0

你是如何創建線程?線程池?線程類?你確切知道你想要停止或將要做什麼? –

回答

1

當您使用Thread.Sleep()時,您只停止調用此方法的線程。如果您的主線程(即UI線程)調用Thread.Sleep(),則應用程序會凍結(實際上其他線程繼續工作,但UI不會刷新)。所以,如果你想停止某些線程,那麼:

  • 它不應該是主線程
  • 只需撥打Thread.Sleep()該線程

實例(假設這個代碼在主線程中執行) :

ThreadPool.QueueUserWorkItem(DoSomething); 
Thread.Sleep(1000); // this will freeze application 

而這是一個回調(其上後臺線程執行):

static void DoSomething(object state) 
{ 
    Thread.Sleep(5000); // this will not freeze application 
}