C# 阻止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() {

形势

这里提供了一个windows服务,我想实现自动更新功能。对于这种情况,我调用另一个处理更新过程的可执行文件

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()。哇,真遗憾我没有尝试这个。很有魅力,谢谢!