【问题标题】:Workaround external exception in cmd - c#cmd中的外部异常的解决方法 - c#
【发布时间】:2017-10-23 14:18:53
【问题描述】:

我有一个使用 cmd 运行 EXE 文件的方法。此 EXE 文件在初始化期间出现异常,然后重试并在我的系统上启动一个进程。我无法编辑 EXE 文件以更改其行为。 运行代码时,出现异常后,命令行窗口立即关闭。 如何在重试之前保持 cmd 窗口打开? 谢谢, 塔尔。

  public void RunJob(Process cmdProcess)
    {                     
        cmdProcess.StartInfo.FileName = "cmd.exe";
        cmdProcess.StartInfo.UseShellExecute = false;
        cmdProcess.StartInfo.CreateNoWindow = true;
        cmdProcess.StartInfo.RedirectStandardOutput = true;
        cmdProcess.OutputDataReceived += new DataReceivedEventHandler(form.SortOutputHandler);
        cmdProcess.StartInfo.RedirectStandardError = true;
        cmdProcess.ErrorDataReceived += new DataReceivedEventHandler(form.SortOutputHandler);
        cmdProcess.StartInfo.RedirectStandardInput = true;
        cmdProcess.StartInfo.Arguments = string.Format("/k cd  \"{0}\\BinFolder\"", form.txtLocalRepo);
        cmdProcess.StartInfo.Verb = "runas";

        cmdProcess.Start();

        StreamWriter cmdStreamWriter = cmdProcess.StandardInput;

         cmdProcess.BeginOutputReadLine();

        cmdStreamWriter.WriteLine("START testing.exe");
    }

【问题讨论】:

  • 您不必一直打开窗口。您可以使用 Process.WaitForExit() 等待程序,同时可以接收 WMI 事件,通知您备份程序的启动(当您启动的可执行文件在初始化过程中失败时启动)。您可以检查以下内容:(已接受的答案,编辑 2)stackoverflow.com/questions/8157548/…

标签: c# windows exception cmd


【解决方案1】:

如果这是一个控制台应用程序,那么您可以考虑使用新的Async Main 方法。您可以将其与 TaskCompletionSource 之类的内容结合使用,这样您就可以在准备好时将您的应用标记为完成,并让它等到您将任务标记为完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多