У нас есть служба, которая должна убить себя (причина: мы используем стороннюю библиотеку lib, которая непредсказуемо ведет себя в сценариях выключения ...).Иногда служба не перезапускается диспетчером управления службами Windows.Действия по восстановлению службы в SCM установлены на «Перезапуск службы» (для первого, второго и последующих сбоев).
Таким образом, мы убиваем наш сервис:
public static void TerminateProcess(string message)
{
Log.ErrorFormat("Terminating Process becauses of: {0}", message);
Process.GetCurrentProcess().Kill();
}
Кто-нибудь знает, является ли этот Process.GetCurrentProcess().Kill();
хорошим способом убить службу?
Я также читал некоторые темы, где была предложена следующая комбинация:
class MyService : ServiceBase
{
void KillMe()
{
this.ExitCode = 1; // ServiceBase.ExitCode
System.Environment.Exit(1);
}
}
Я также нашелэтот поток stackoverflow , но в нем ничего не говорится о восстановлении службы.
Какой предпочтительный / безопасный способ убить службу, чтобы SCM перезапустил ее?
Thx