当从ServiceBase
派生类时,我是否也应该调用基类的方法?
protected override void OnStart(string[] args)
{
//
// The stuff I do when the service starts.
//
base.OnStart(args); // Do I need to call this?
}
当从ServiceBase
派生类时,我是否也应该调用基类的方法?
protected override void OnStart(string[] args)
{
//
// The stuff I do when the service starts.
//
base.OnStart(args); // Do I need to call this?
}
简短回答是, 是的,你应该这么做。
在这种情况下,OnStart方法的基础实现并没有做任何重要的事情,但这是一个随时可能更改的实现细节。作为一般惯例,除非你有充分的理由不这样做,否则你应该始终调用基础方法。
如果你使用ILSpy等反编译工具对服务基类进行反编译,你会发现在.NET 4.0 / 4.5中的OnStart、OnStop等方法没有任何操作。
但这种行为可能会在未来的.NET版本中发生改变,如果你不调用它的话,就可能会出现意外或无法预测的行为。因此,我认为调用这些base.OnEvent()方法是一个好的实践。
我写服务时从未调用过base.OnStart。
然而,如果你确实需要调用,一定要让基类在方法的第一行调用,而不是最后一行!