我是C#的新手。我有一个Windows服务。在这项服务中,我运行一个线程。我想在线程完成后立即停止服务。目前,我的代码如下:
while(true){
if(isThreadFinished){
MyService.Stop();
break;
}
}
它有效,但我觉得像这样使用while(true)是一种愚蠢的方式。所以,我想知道是否有其他方法可以实现我的请求。
答案 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循环...并且如果您的线程在很长一段时间内更加优化......