Должен ли я обращаться к методам базового класса в службах Windows?
При выводе из ServiceBase, следует ли мне также вызвать методы базового класса?
protected override void OnStart(string[] args)
{
//
// The stuff I do when the service starts.
//
base.OnStart(args); // Do I need to call this?
}
Ответ 1
Короткий ответ - да, вы должны.
В этом конкретном случае базовая реализация метода OnStart не делает ничего существенного, но это деталь реализации, которая может измениться в любое время. Как общая практика, вы всегда должны вызывать базовый метод, если у вас нет веских оснований.
Ответ 2
Если вы декомпилируете сервисную базу с помощью ILSpy или аналогичного, вы увидите, что OnStart, OnStop и т.д. ничего не делают (по крайней мере, в .NET 4.0/4.5).
Но это поведение может измениться некоторое время, поэтому в будущих выпусках .NET может возникнуть нежелательное или непредсказуемое поведение, если вы его не назовете.
Я считаю хорошей практикой назвать эти base.OnEvent() - Методы.
Ответ 3
Я не думаю, что когда-либо называл base.OnStart, когда писал службы.
Однако если вы делаете так, чтобы базовый класс вызывал первую строку вашего метода, а не последнюю!