Solución:
Este artículo utiliza el ServiceController
clase para escribir métodos para iniciar, detener y reiniciar los servicios de Windows; valdría la pena echarle un vistazo.
Fragmento del artículo (el método “Reiniciar servicio”):
public static void RestartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2-millisec1));
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch
{
// ...
}
}
Eche un vistazo a la clase ServiceController.
Para realizar la operación que debe realizarse cuando se reinicia el servicio, supongo que debería hacerlo en el Servicio usted mismo (si es su propio servicio).
Si no tiene acceso a la fuente del servicio, quizás pueda usar el WaitForStatus
método del ServiceController
.
Un ejemplo de uso de ServiceController Class
private void RestartWindowsService(string serviceName)
{
ServiceController serviceController = new ServiceController(serviceName);
try
{
if ((serviceController.Status.Equals(ServiceControllerStatus.Running)) || (serviceController.Status.Equals(ServiceControllerStatus.StartPending)))
{
serviceController.Stop();
}
serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running);
}
catch
{
ShowMsg(AppTexts.Information, AppTexts.SystematicError, MessageBox.Icon.WARNING);
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)