2
我有WIndows服務應用程序,並希望在主代碼執行時停止服務。我想在的OnStart事件來執行ServiceBase.Stop(),一切工作正常,該服務被停止,但我在事件查看器停止服務沒有錯誤「服務無法啓動。句柄無效」
"Service cannot be started. The handle is invalid"
任何想法如何停止窗口服務無差錯招人煩的錯誤信息?
public partial class VirtualServerInitService : ServiceBase
{
public ILogger EventLogger = new EventLogger();
public VirtualServerInitService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
EventLogger.Write("Starting service!");
new VirtualServerInit(EventLogger).Run();
EventLogger.Write("VirtualServerInit code was executed");
Stop();//This code works and also gives error in event viewer
}
protected override void OnStop()
{
EventLogger.Write("Stopping service!");
}
}
只需從'OnStart'方法返回,並且如果在進程中沒有更多的前臺線程正在運行,則進程將退出並且服務將被視爲停止。沒有必要在其上調用「停止」。 –
你的'OnStart'應該完成讓SCM知道你已經成功啓動了。 *然後*做你的工作。工作完成後,服務不應該「停止」自己,它應該坐下來等待更多的工作。只有當SCM要求你停止時才停止。 –
@Damien_The_Unbeliever執行OnStart代碼後服務不會自動停止! – Tomas