【发布时间】:2013-08-16 04:39:07
【问题描述】:
我是 C# 的新手。我有一个 Windows 服务。在这个服务中,我运行一个线程。我想在线程完成后立即停止服务。目前,我的代码是这样的:
while(true){
if(isThreadFinished){
MyService.Stop();
break;
}
}
它有效,但我觉得像这样使用 while(true) 是一种愚蠢的方式。所以,我想知道是否有其他方法可以实现我的要求。
【问题讨论】:
-
是什么让你觉得这是一种愚蠢的方式?
-
@Shane.C 因为这样 CPU 使用率会无缘无故地飙升。
-
这不是一个愚蠢的方式,但它会涉及大量处理,您可能希望使用计时器,并且只检查线程是否在 X 毫秒后完成
-
@Shane.C 当我调试时,我看到程序必须同时运行线程和 while(true)...,所以,如果线程必须运行很长时间时间,我担心它会减慢我的程序。
-
为什么不能在执行线程的最后一步调用 MyService.Stop?
标签: c# multithreading windows-services