阻止Windows服务启动

时间:2014-12-12 09:23:50

标签: c# windows-services

场合

提供了一个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-Function时,它启动另一个过程,确定是否有可用的更新。如果有,我再次使用参数调用该进程来更新服务(它基本上只等待几秒钟,以便服务可以关闭,然后使用installshield安装程序卸载并安装服务)。

显然,这不是最聪明的解决方案。我现在面临的问题如下:

当我抛出一个Exception来阻止服务启动时(我猜?)应用程序崩溃并告诉我服务没有及时响应(错误1053)。

实际问题

如何在此状态下正确取消Windows服务?

0 个答案:

没有答案