時終止Windows服務,我創建一個線程並啓動它。
線程1 =新TThread1(假)如何在Windows服務的ServiceStart()調用中的某個子線程終止
在子線程的執行過程中,也一直運行並執行該服務是應該做的一環。
問題是,當我在此線程中遇到錯誤時,我想終止線程並停止服務。
如何讓服務自行停止,如果它啓動的線程停止(失敗)。
時終止Windows服務,我創建一個線程並啓動它。
線程1 =新TThread1(假)如何在Windows服務的ServiceStart()調用中的某個子線程終止
在子線程的執行過程中,也一直運行並執行該服務是應該做的一環。
問題是,當我在此線程中遇到錯誤時,我想終止線程並停止服務。
如何讓服務自行停止,如果它啓動的線程停止(失敗)。
一個可能性是使用看門狗定時器: 在你的線程中你重置定時器(例如,每次你進入循環)。 當計時器的時間間隔已過期,你知道線程可能不工作了,這樣你就可以重新啓動該服務或什麼都...
一個更好的辦法可能是趕上線程異常和記錄它們。或者你可以捕捉異常,記錄它,然後停止服務。通過這種方式,您可以控制服務停止,並且還可以對生成的錯誤有所瞭解。
撥打電話停止服務:
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; }