只停止一个线程

时间:2012-11-02 20:54:38

标签: c# multithreading thread-safety threadpool thread-sleep

我的应用程序中有很多线程,如何只停止它们中的一个线程?如果我使用Thread.Sleep()它会停止整个应用程序,我只想停止一个线程。我怎么做?我正在使用c#。

1 个答案:

答案 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
}
相关问题