C# 阻止windows服务启动
形势 这里提供了一个windows服务,我想实现自动更新功能。对于这种情况,我调用另一个处理更新过程的可执行文件C# 阻止windows服务启动,c#,windows-services,C#,Windows Services,形势 这里提供了一个windows服务,我想实现自动更新功能。对于这种情况,我调用另一个处理更新过程的可执行文件 public partial class Main : ServiceBase { public Main() { InitializeComponent(); TryUpdate(); /* Some Extra Code */ } private void TryUpdate() {
public partial class Main : ServiceBase
{
public Main()
{
InitializeComponent();
TryUpdate();
/* Some Extra Code */
}
private void TryUpdate()
{
Process proc = new Process();
proc.StartInfo.FileName = @"UpdateCheck.exe";
proc.Start();
proc.WaitForExit();
if (proc.ExitCode != 0)
{
Process proc2 = new Process();
proc2.StartInfo.FileName = @"UpdateCheck.exe";
proc2.StartInfo.Arguments = "Update";
proc2.Start();
/* Here is where I want the application to quit! */
throw new Exception();
}
}
protected override void OnStart(string[] args)
{
/* Some Extra Code */
base.OnStart(args);
}
}
当我调用TryUpdate函数时,它会启动另一个进程,确定是否有可用的更新。如果有,我将使用参数再次调用进程以更新服务(它基本上只需等待几秒钟,以便服务可以关闭,然后使用installshield安装程序卸载和安装服务)
显然,这不是最明智的解决方案。但我现在面临的问题是:
当我抛出异常以停止服务启动(我猜是吧?)时,应用程序崩溃并告诉我服务没有及时响应(错误1053)
实际问题
如何在此状态下正确取消windows服务 如果从ServiceBase派生,则可以调用this.Stop()。哇,真遗憾我没有尝试这个。很有魅力,谢谢!