如何在C#.Net 4.0中重启线程?

Sha*_*wat 7 c# multithreading .net-4.0

我在VS 2010中使用C#.Net4.0.如何重新启动Thread

它就像我想要Abort()的线程和Start()它从一开始?可能吗?

Jul*_*ien 8

中止线程通常是个坏主意.他是顾问.如果它是一个无限循环,则一个布尔值用于在没有堕胎的情况下停止线程.

bool run = true;
Thread thread = new Thread(method);
thread.start();

private void method()
{
  while(run)
  {

  }
}
Run Code Online (Sandbox Code Playgroud)

要停止线程,只需将布尔值设置为false,通常,您可以稍后重新启动它.

  • 好建议。`run` 应该是 `volatile` 以避免由于编译器优化而无限期等待。 (2认同)
  • @YS。:在 .NET 中读取或写入布尔值**保证是原子的**。因此,不需要锁或监视器。http://stackoverflow.com/questions/59422/is-a-bool-read-write-atomic-in-c-sharp (2认同)

小智 7

创建新的线程实例并再次执行.thread1 = new Thread(); thread1.start();