-1

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

4

1 回答 1

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
}
于 2012-11-02T21:07:09.573 回答