线程完成后停止程序

时间:2013-08-14 09:37:37

标签: c# multithreading windows-services

我是C#的新手。我有一个Windows服务。在这项服务中,我运行一个线程。我想在线程完成后立即停止服务。目前,我的代码如下:

while(true){
     if(isThreadFinished){
          MyService.Stop();
          break;
     }
}

它有效,但我觉得像这样使用while(true)是一种愚蠢的方式。所以,我想知道是否有其他方法可以实现我的请求。

3 个答案:

答案 0 :(得分:1)

bool x=true;
while(x==true){
 if(isThreadFinished){
      x=false;
      MyService.Stop();
      break;
 }
}

答案 1 :(得分:0)

我不知道C#,但通常你会有一个API thread.join()或类似的等待线程完成。

如果没有别的,你可以阻止同一个同步对象。

在Java中,还有Object.wait()和Object.notify()可以解决问题。

答案 2 :(得分:0)

为什么不使用委托? 您在官方MSDN网站上有一个示例和文档here ...

你只需在线程结束前称你为委托方法......

这更加确切地说是一个while循环...并且如果您的线程在很长一段时间内更加优化......