C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: WindowsサービスのOnStartで、停止する方法


(過去ログ 31 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■14866 / inTopicNo.1)  WindowsサービスのOnStartで、停止する方法
  
□投稿者/ tucchi (12回)-(2008/02/28(Thu) 09:10:29)

分類:[.NET 全般] 

お世話になってます。
tucchiです。

VS2003のC#でWindowsサービスを作成しています。

OnStartで、動作に必要な設定値(DBや設定ファイルなど)のチェックを行い、
NGの場合はサービスを停止させたいのですが、調べてみても方法がわかりませんでした。

this.Stop()のようなことはできないので、
OnStart内で自サービスのインスタンスを作成し、そのインスタンスで
(インスタンス名).stop()とするしかないのでしょうか?
自分のなかで自分のインスタンスを作成するのは、ちょっと違和感があるのですが・・・。

お手数ですが、教えてください。よろしくお願いいたします。
引用返信 編集キー/
■14869 / inTopicNo.2)  Re[1]: WindowsサービスのOnStartで、停止する方法
□投稿者/ オショウ (21回)-(2008/02/28(Thu) 09:59:45)
No14866 (tucchi さん) に返信
> OnStartで、動作に必要な設定値(DBや設定ファイルなど)のチェックを行い、
> NGの場合はサービスを停止させたいのですが、調べてみても方法がわかりませんでした。

  無理やりエラーを発生させてやれば、停止します。

  しかしながら、インベントビューワーにサービスが起動しないエラー報告が書き込まれたり
  場合によっては、デスクトップにサービスが起動しなかったダイアログが表示されたりしま
  す。エラーを発生させる際のエラー内容に依存しますので、ご注意下さい。

  尚、サービス側の設定で、エラー時再起動させる設定であれば、無限に繰り返しますので、
  エラー時何もしない。と言う設定にしておく必要があります。

  参考までに。

以上。
引用返信 編集キー/
■14895 / inTopicNo.3)  Re[1]: WindowsサービスのOnStartで、停止する方法
□投稿者/ asuka (42回)-(2008/02/28(Thu) 15:22:50)
僕も同じようなことで悩んでいたのですが、OnStart内で自分を停止する場合には、

throw new ApplicationException("例外が発生しました。");

などとしてApplicationExceptionを投げてやると停止する模様です。


protected override void OnStart(string[] args)
{
try
{
    if( ! DBチェック )
throw new ApplicationException();
}
catch(ApplicationException e)
{
Console.WriteLine(e.ToString);
    Console.WriteLine("DBチェックでエラったぜ!");
}
・・・
}

などとして対応出来そうですが如何でしょう?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -