自動的に開始され、ステータスが「開始済み」になるWindowsサービスを作成しました。サービスの状態が「開始」状態になり、システムを再起動しても「開始」状態に戻らないことがあります。コード内の未処理の例外が原因で発生している可能性があります。
public partial class EngineHostService : ServiceBase
{
internal static ServiceHost _serviceHost = null;
public EngineHostService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
if (_serviceHost != null)
_serviceHost.Close();
_serviceHost = new ServiceHost(typeof(EngineService.Engine));
_serviceHost.Open();
}
catch (Exception ex)
{
ErrorHandler.LogEvent(ex.Message);
}
}
protected override void OnStop()
{
if (_serviceHost != null)
{
_serviceHost.Close();
_serviceHost = null;
}
}
}
上記のコードでは、Engine クラスのコンストラクターが実行されると、いくつかの例外がスローされます。サービスを停止したい: 1- 何らかの例外がスローされた場合。2-コンストラクター内で呼び出した関数がfalseを返す場合。必要に応じてサービスを停止する方法はありますか。そうする場合、サービスのステータスが「開始済み」または「停止済み」のいずれかになるはずです。何らかの方法を提案します。