c# - 使用 Process.Start() 时将异常冒泡回调用者

标签 c# winforms process command-prompt

我有一个windows 窗体 应用程序和一个命令提示符 exe。我在 win form button click 中执行命令提示符

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "ConsoleApplication2.exe";
Process.Start(info);

我有一些操作 whtin 按钮单击事件调用 exe 后执行。但我只需要在命令提示符 exe 没有抛出异常的情况下执行。基本上需要的是从 exe 中冒出异常以从中获胜。我尝试抛出异常,但由于 exe 和 win from 都是两个不同的应用程序实例,因此不会将异常抛回给调用者。有什么办法可以实现吗?

最佳答案

您的代码激活一个 exe 文件。请注意,您的程序与其他所有程序一样正在返回一个代码。此返回码可以通过以下方式实现:

ProcessStartInfo info = new ProcessStartInfo();
     info.FileName = "ConsoleApplication2.exe";
     Process p = Process.Start(info);
     p.WaitForExit();
     int eCode = p.ExitCode;

请不要在主线程中这样做,因为它会在进程停止之前停止。 在您的 ConsoleApplication2.exe 中,确保在出现异常的情况下您将返回(在 main 函数中)一个代码(数字),指示出现错误。就这么简单:

  static int Main()
  {
     try
     {
        // My code
     }
     catch (Exception)
     {
        return 5;// Meaning error
     }

     return 0; // all went better then expected!
  }

关于c# - 使用 Process.Start() 时将异常冒泡回调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856066/

相关文章:

c# - 在 VS 2010 的 Winforms 项目中添加 WPF 窗口

winforms - 仅当文本不适合时,如何才能在 System.Windows.Forms.TextBox 上显示滚动条?

c# - 从 Threadpool 工作线程启动进程(并在需要时等待)

c# - 关于应用程序在 XP/W2K3 中没有获得焦点的问题

c# - 是否有像 Django 或 Ruby on Rails 这样的 C# Web 框架?

c# - 在单个 View 上更新模型和模型集合 (MVC4)

c#有没有办法让我的基类和派生类分别实现接口(interface)方法?

c# - 如何在两种不同形式(同一程序)之间引发事件

c++ - Process.ExitCode 属性返回的退出代码不正确

Python execv 和管道输出