如何知道线程执行是否终止?

时间:2011-11-17 20:07:26

标签: c# .net multithreading

我有一个帖子:

private void start_Click(object sender, EventArgs e) {
   //...
   Thread th = new Thread(DoWork);
   th.Start(); 
}

知道线程是否被终止的最佳方法是什么? 我正在寻找一个示例代码如何做到这一点。 提前谢谢。

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

如果你只是想等到线程完成,你可以使用。

th.Join();

答案 2 :(得分:2)

你可以做的很简单。

您可以使用Thread.Join查看该帖子是否已结束。

var thread = new Thread(SomeMethod);
thread.Start();
while (!thread.Join(0)) // nonblocking
{
  // Do something else while the thread is still going.
}

当然,如果你没有指定超时参数,那么调用线程将阻塞,直到工作线程结束。

您还可以在入口点方法结束时调用委托或事件。

// This delegate will get executed upon completion of the thread.
Action finished = () => { Console.WriteLine("Finished"); };

var thread = new Thread(
  () =>
  {
    try
    {
      // Do a bunch of stuff here.
    }
    finally
    {
      finished();
    }
  });
thread.Start();

答案 3 :(得分:0)

简单地使用 Thread.join()正如哈拉姆所说。 切换此链接以获得更清晰: http://msdn.microsoft.com/en-us/library/95hbf2ta.aspx

  

使用此方法确保线程已终止。来电者会   如果线程没有终止,则无限期地阻塞。如果线程有   调用Join时已经终止,该方法返回   立即