2

非常に単純な Windows サービスで問題が発生しています。「ウォークスルー: コンポーネント デザイナーでの Windows サービス アプリケーションの作成」で説明されているように、サービスを作成しました。

私は持っている:

  • c:\mylogs に単純なファイルを作成するサービス
  • serviceinstaller (serviceprocessinstaller は LocalSystem として実行されます)
  • サービスをインストールするセットアップ プロジェクト

経由でサービスを開始および停止できnet start/stop <servicename>ます。しかし、サービスのコンストラクターでアクションを実行しても、何も起こりません。

localadmin としてサービスをインストール、開始、および停止します。

4

1 に答える 1

2

サービス初期化コードは、コンストラクターではなく、OnStartイベントハンドラーに配置する必要があります。サービスのクリーンアップとシャットダウンのコードは、OnStopイベントに含まれている必要があります。

startイベントで実際に行う必要があるのは、サービスがアクティブである限り実行されるワーカースレッドを起動し、実際の処理を実行することだけです。これを単純化するためにBackgroundWorkerコンポーネントを使用できます。サービスが停止したら、必要なクリーンアップを実行し、バックグラウンドスレッドを終了します。

OnStartおよびOnStopイベントハンドラーのコードは、実行に1〜2秒以上かかることはありません。Windowsサービスマネージャーは、サービスが正常に開始または停止したかどうかを報告するのを待っています。サービスが正常に開始または停止した場合は、エラーが表示されます。 tサービスコントロールマネージャーにすばやくフィードバックを提供します。

于 2012-04-05T11:39:41.647 に答える