14

から派生する場合ServiceBase、基本クラスのメソッドも呼び出す必要がありますか?

protected override void OnStart(string[] args)
{
    //
    // The stuff I do when the service starts.
    //

    base.OnStart(args); // Do I need to call this?
}
4

3 に答える 3

17

簡単に言えば、そうすべきです。

この特定のケースでは、OnStart メソッドの基本実装は重要なことは何もしませんが、それはいつでも変更される可能性がある実装の詳細です。一般的な慣行として、特に理由がない限り、常に基本メソッドを呼び出す必要があります。

于 2012-09-18T14:54:43.970 に答える
5

ILSpyなどを使用してサービスベースを逆コンパイルすると、OnStart、OnStopなどは何も実行しないことがわかります(少なくとも.NET 4.0 / 4.5では)。

ただし、この動作はしばらく変更される可能性があるため、.NETの将来のリリースでは、呼び出さない場合、望ましくない動作または予期しない動作が発生する可能性があります。
これらのbase.OnEvent()-メソッドを呼び出すのは良い習慣だと思います。

于 2012-09-18T14:58:12.697 に答える
0

サービスを書いたときに base.OnStart を呼び出したことはないと思います。

ただし、そうする場合は、常に基本クラスがメソッドの最後の行ではなく最初の行を呼び出すようにしてください。

于 2012-09-18T14:54:22.503 に答える