有没有办法从同一服务重启Windows服务,如Windows窗体中的Application.Restart(),我不想从服务启动另一个进程来重启服务。
答案 0 :(得分:1)
我是一个名为Daemoniq的开源Windows服务托管框架的开发人员。 Setting service recovery options是其功能之一。您可以从http://daemoniq.org
下载目前的功能包括:
谢谢!
答案 1 :(得分:0)
您还可以在安装项目中将自定义操作添加到自定义操作的提交文件夹中。它必须是类库项目的主要输出,其类继承自System.Configuration.Install.Installer并具有[RunInstaller(true)]属性。在这个类中,您需要覆盖一个基本方法:
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
ProcessStartInfo psi = new ProcessStartInfo("sc", "failure \"You service name\" reset= 60 actions= restart/1000");
psi.CreateNoWindow = true;
Process proc = Process.Start(psi);
proc.WaitForExit();
}
它将您的服务配置为在失败后自动重启。
与您需要重新启动服务时相比,您可以
Environment.FailFast("Self restarting service...");
但它有一个缺点 - 它将在事件日志中触发错误消息。