我希望每隔一小时通过c#代码重启windows服务。我有这个方法 但当我,但它在项目安装程序或在哪里?我可以将它放在我想重新启动它的同一服务中吗?
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
{
// ...
}
}
答案 0 :(得分:0)
您可以将其添加到Windows计划程序。只需将此功能放在Windows命令程序中,并按小时计划启动它。此外,您可以使用第二项服务来完成第一项服务的回收。
-rwg
答案 1 :(得分:0)
我通过像这样在服务中创建一个方法来解决它
private void StopService()
{
using (ServiceController service = new ServiceController("ServiceName"))
{
try
{
TimeSpan timeout = TimeSpan.FromMilliseconds(80000);
if (!(service.Status.Equals(ServiceControllerStatus.StartPending) || service.Status.Equals(ServiceControllerStatus.StopPending)))
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
}
}
catch (Exception ex)
{
ExceptionLog(ex);
}
}
}
并制作另一项服务以重新启动它