如下面的鏈接,可以使用C#代碼停止,啓動和「停止,然後啓動」服務。如何將自定義命令從.NET代碼發送到.NET Windows服務?
http://www.csharp-examples.net/restart-windows-service/
我紛紛出爐,它實現OnStart
和OnStop
一個.NET服務。但是,我需要實現一個「智能重啓」功能,而不僅僅是停止然後開始。如果需要,我需要將停機時間保持在幾秒鐘(但是在這種情況下,停止+啓動可能需要幾分鐘時間,並且我必須乾淨地完成),並且讓系統的某些部分可用,而其他人則可以重新啓動/刷新。長篇小說 - 在我開始實施OnSmartRestart
功能之前,我想確保從另一個C#應用程序中調用此調用的方法相當簡單。
此功能很重要,但很危險。我想讓它隱藏起來,有點安全,也保持簡單,並且確保這對我的Windows服務在執行常規任務時不影響性能,而不是重新啓動。
如果我不得不輪詢某個文件或打開一個端口,並花費太多的CPU來做這件事,它不會是一個好的解決方案。我也想保持這個儘可能簡單(抱歉重複)。
一些額外的信息:DOS SC.exe命令也可以發送這些命令,安全權限允許...例如。 'SC CONTROL YOURSERVICENAME 200' – Adrian 2012-12-13 13:46:18
Adrian,如果您的方法是替代方法,通常如何使用命令調用它?你的命令中的「200」類似於上面源代碼中的222嗎? – MacGyver 2015-11-24 08:45:11
請注意,這需要在您的.Net應用/網站獨立運行的典型服務器環境中具有特殊權限的有限權限用戶。您可以通過向該用戶授予使用此方法發送自定義命令的權限來解決該問題:http://i.imgur.com/tql3pUA.png http://superuser.com/a/315709/101698 – 2016-03-23 14:54:59