在Windows服务的ServiceStart()调用中,我创建一个线程并启动它 Thread1 =新的TThread1(假)
在子线程的执行过程中,有一个循环永远运行并且该服务应该这样做。
问题是当我在这个线程中出现错误时,我想终止线程,并且也停止服务。
如果启动的线程停止(失败),我怎样才能让服务停止运行。
答案 0 :(得分:1)
可能是使用看门狗定时器: 在你的线程中你重置计时器(例如每次进入循环)。 当计时器的间隔期满时,你知道该线程可能不再工作了,所以你可以重启服务或者什么......
答案 1 :(得分:0)
更好的方法可能是捕获线程中的异常并记录它们。或者您可以捕获异常,记录它,然后停止服务。这样您就可以控制服务停止,并且您也可以深入了解正在生成的错误。
答案 2 :(得分:0)
拨打电话停止服务:
bool StopService(string svr_name) { bool ret = false; if (svr_name.Length > 0) { try { ServiceController sc = new ServiceController(svr_name); if (sc.Status == ServiceControllerStatus.Stopped) { return true; } sc.Stop(); } catch (Exception) { return false; } } return ret; }