none
Windowsサービスで追加したイベントの受信 RRS feed

  • 質問

  • いつもお世話になっております。

    すみません。またわからないので、投稿させて頂きます。

     

    開発環境:Visual Studio.net 2003

    開発言語:Visual C#プロジェクト

    プロジェクト:Windows サービス

     

    開発プログラム仕様:

     ・イベントログを監視する。

     ・イベントログに新たに書込みがあった場合はテキストファイルに出力する。

     

    問題点:

     プログラムより登録した以下のイベントがサービスで起動すると

     受信出来ない。

     原因の切り分け用でコンソールアプリケーションで同じ記述をすると動作出来る。

     

     ~ イベント ~

     Eventlog.EntryWritten += new EntryWrittenEventHandler(イベント受信後の処理関数);

     

     ①サービスの処理

       ・main処理にイベントログ受信イベント追加を記述しました。

       ・OnStartでスレッドを作成しています。

       ・スレッドはwhileループを実行しています。

        ループ内の処理はSystem.Threading.Thread.Sleep(1000);です。

        (Eventlogを受信するため無限ループ)

       ※イベント受信後の処理関数では、一番最初に

         呼ばれているかどうか確認するため、テキストファイルを出力する処理を

         追加しましたが、テキストファイルが作成されていませんでした。

     

     ②コンソールの処理(原因の切り分け用)

       ・main処理にイベントログ受信イベント追加を記述しました。スレッドを作成しています。

       ・スレッドはwhileループを実行しています。

        ループ内の処理はSystem.Threading.Thread.Sleep(1000);です。

        (Eventlogを受信するため無限ループ)

       

     

    サービスの場合、動的なデバッグが出来ないので、

    どなたかご教授して頂けないでしょうか。

     

     

    2007年4月6日 2:46

回答

  • サービスは通常通り開始しておきます。(勿論 Debug ビルドしたものです)
    Visual Studio をデバッガに使うなら、「デバッグ」->「プロセス」で表示されるダイアログから、サービスのプロセスを選択して「アタッチ」して下さい。デバッグするプログラムの種類は「Common Language Runtime」です。他は規定値で大丈夫だと思います。

    (直接的な回答でなく申し訳ありません)

    2007年4月6日 5:06
  • ご連絡ありがとうございます。

    デバッグを行ったところ、原因がわかりました。

    コーディングミスでした。

     

    2007年4月6日 8:46

すべての返信

  • サービスの場合、動的なデバッグが出来ないので、

    どなたかご教授して頂けないでしょうか。

    できますよ。どうやってますか?
    2007年4月6日 3:44
  • メニューの「デバッグ(D)」を押下後、「開始(S)」を押下しています。

    すると、「windows サービス開始エラー」というメッセージボックスがポップアップされます。

    起動が出来ません。

     

    内容:

     コマンドラインやデバッガからWindowsサービスを開始出来ません。聖書にinstallutil.exeを実行して

    wndowsサービスをインストールし、ServerExplorer、windows Services Administrativeツール、または

    NET STARTコマンドを使用してください。

     

     

    2007年4月6日 4:50
  • サービスは通常通り開始しておきます。(勿論 Debug ビルドしたものです)
    Visual Studio をデバッガに使うなら、「デバッグ」->「プロセス」で表示されるダイアログから、サービスのプロセスを選択して「アタッチ」して下さい。デバッグするプログラムの種類は「Common Language Runtime」です。他は規定値で大丈夫だと思います。

    (直接的な回答でなく申し訳ありません)

    2007年4月6日 5:06
  • ご連絡ありがとうございます。

    デバッグを行ったところ、原因がわかりました。

    コーディングミスでした。

     

    2007年4月6日 8:46