5

Windows サービス プロジェクトを作成しました。そして、新しいプロジェクトを作成すると、次のようになります。

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
  new Service1() 
};
ServiceBase.Run(ServicesToRun);

そして今、いくつかの関数とタイマーをクラスに追加する必要がService1()あり、すべて問題ありません。

ここで、私のサービスは、いくつかのファイルの読み取り、いくつかのフォルダーの削除、接続の確認などを行う必要があるとしましょう...

そして、それらはすべて非同期で実行する必要があります。今何が良いですか?Service1() のすべての関数をコピーし、他に何も変更しないか、すべての「もの」に対して新しいクラス (Service1()、Service2()、...) を作成し、次のように追加します。

ServicesToRun = new ServiceBase[] 
{ 
  new Service1(),
  new Service2() //not sure this will compile
};

ただ尋ねる。サービスがどのように機能しているかを 100% 理解していなかったのかもしれません...

4

1 に答える 1

0

これは質問に対して一般的すぎるかもしれませんが、Windows サービスは単一または関連する機能のグループを実行する必要があります。一般に、サービスは少ないほど良いですが、サービスが複数のことを実行し始めたら、次の場合はそれらを分離することを検討してください。

  1. これらには、さまざまなレベルのセキュリティが必要です。たとえば、管理者アクセスが必要な機能とそうでない機能がある場合は、それらを別のサービスに分割することを検討してください。
  2. ユーザーは、一方の機能 (つまりサービス) を実行し、もう一方の機能を実行したくない場合があります。たとえば、特定の機能は、オプションのコンポーネントやインストールされていない可能性のあるコンポーネントに依存している場合があります。
于 2012-09-09T05:04:04.733 に答える