#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:
Предполагая, что у вас есть какое-либо приложение, которое устанавливает службу, код для перезапуска (или иного управления службой) должен выполняться в вашем приложении