我已经编写了一个代码来重新启动我的Windows服务,但它永远无法正常工作。服务能够停止但永不重新开始。我的项目是Windows服务中的自托管WCF服务。下面是代码。
重新启动方法
public static void RestartService(string serviceName)
{
try
{
ServiceController svc = new ServiceController(serviceName);
if (svc.Status == ServiceControllerStatus.Running) svc.Stop();
svc.WaitForStatus(ServiceControllerStatus.Stopped, new System.TimeSpan(0, 0, 20));
svc.Start();
svc.WaitForStatus(ServiceControllerStatus.Running, new System.TimeSpan(0, 0, 20));
svc.Dispose();
}
catch (Exception ex)
{
Logging.WriteException(ex);
}
}
主程序
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
try
{
ServiceBase[] ServicesToRun =
{
new MyService()
};
ServiceBase.Run(ServicesToRun);
}
catch (Exception)
{
}
}
答案 0 :(得分:0)
管理服务重启的正确方法是使用Windows服务恢复操作,描述为here。
它们允许您告知服务控制管理器在发生故障时要执行的操作,包括任何重新启动操作,尝试重新启动的次数以及尝试之间等待的时间。
这比你在服务代码本身写的任何内容都要强大。