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

时间:2013-07-25 10:55:44

标签: c# winforms process command-prompt

我有一个windows form应用程序和一个command prompt exe。我正在执行命令提示符whithin win form按钮单击

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

我有一些操作whtin按钮单击事件,它在调用exe后执行。但是,如果没有从命令提示符exe抛出异常,我只需要执行。基本上需要的是从exe中冒出异常来赢得。我尝试抛出异常,但由于exe和win都是两个不同的应用程序实例,异常不会被抛回调用者。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

您的代码激活了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!
  }