我已經在Visual Studio社區2015年在我的Windows 10的筆記本電腦中創建一個Windows服務項目(從Windows 7升級,全面更新),但我一直無法人工成功啓動我的服務,一旦服務開始啓動,我無法強制終止服務。當我嘗試啓動通過服務控制檯(Services.msc)中我的服務,我得到了以下行爲:無法手動啓動C#Windows服務
- A「服務控制」對話框會彈出一個進度條。
- 進度條在90秒內緩慢填充。
- 當進度條已滿時,我收到錯誤1053.
- 服務的狀態更改爲並且在「開始」(開始待定)時保持無限。
- 除了強制重啓之外,服務不能以任何方式停止。
我已經明白,錯誤1053是30秒後無法啓動的服務的結果。但是,我的服務不可能花費超過30秒的時間啓動。我OnStart
,OnStop
和OnTimer
方法目前如下:
protected override void OnStart(string[] args)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 10000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();
}
protected override void OnStop()
{
}
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
{
}
而且我Main
方法是這樣的:
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService()
};
ServiceBase.Run(ServicesToRun);
}
奇怪的是,如果我的服務的啓動方式設置爲「自動」,則服務確實會在下一次Windows重新啓動時自行啓動。當它自動啓動時,我可以手動停止服務(這是唯一一次手動停止)。但是,手動成功停止後,我仍然無法手動重新啓動它。嘗試這樣做產生完全相同的行爲沒有錯誤(通過installutil)前文所述,在錯誤再次導致1053
我的服務安裝,並沒有錯誤,我可以卸載。但是,如果嘗試在服務停留在「正在啓動」(啓動待定)模式時嘗試卸載我的服務(通過installutil/u),服務不會停止,仍然爲「正在啓動」,並且啓動模式將切換爲「已禁用」。只有在重新啓動後才能完全刪除服務。
我的問題: 爲什麼我的服務在Windows啓動時自動啓動,但不能通過任何其他手動方法啓動? (我需要它自動啓動,但也可以手動啓動和停止它。)
謝謝您的時間和專業知識。
顯示OnStop方法 – BWA
OnStop方法添加到原始文章,它是空的 – Chase
你可以檢查事件查看器,看看是否有任何錯誤被捕獲? – Martin