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()-Methods 是一个好习惯。

于 2012-09-18T14:58:12.697 回答
0

我认为我在编写服务时从未调用过 base.OnStart。

但是,如果您这样做,请始终让基类调用您方法的第一行,而不是最后一行!

于 2012-09-18T14:54:22.503 回答