Как перезапустить службу Windows?

#c# #asp.net #visual-studio #windows-services

#c# #asp.net #visual-studio #windows-services

Вопрос:

Я получил фрагмент из http://www.csharp-examples.net/restart-windows-service / чтобы перезапустить службу Windows, но я не уверен, куда поместить код?

Мне нужно перезапустить службу Windows после того, как она будет установлена в моем приложении.

Спасибо!

ОТРЕДАКТИРОВАНО

 private void ProjectInstaller_OnAfterInstall(object sender, InstallEventArgs e)
    {
        //base.OnAfterInstall(e);
        ServiceController sc = new ServiceController("MyServiceName", Environment.MachineName);
        sc.Start();
        System.Threading.Thread.Sleep(3000);
        sc.Stop();
        System.Threading.Thread.Sleep(2000);
        sc.Start();
        System.Threading.Thread.Sleep(3000);
    }
  

Комментарии:

1. Ведущий: У меня есть решение. Я ценю введенные комментарии, но ни один из них мне не помог, поэтому я хочу удалить вопрос.

Ответ №1:

Я не думаю, что вам следует вводить after install. Установщик, вероятно, все равно запустит службу после установки, и это кажется неаккуратным способом сделать это. Вы можете создать небольшое приложение или .dll, которое может это сделать, если вам это действительно нужно, и может быть вызвано из самого установщика, когда все будет завершено. Однако я бы исследовал, почему вам нужно перезапустить службу после установки, поскольку это в основном указывает на ошибку в вашей программе. Это должно быть проще решить.

Это сокращение должно выполнить трюк с перезапуском. Не используйте режим ожидания, поскольку для запуска / остановки службы может потребоваться больше указанного времени, и вы получите исключение.

 var sc = new ServiceController("MyService");
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30));
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));
  

Ответ №2:

Предполагая, что у вас есть какое-либо приложение, которое устанавливает службу, код для перезапуска (или иного управления службой) должен выполняться в вашем приложении