【发布时间】:2016-09-02 12:26:54
【问题描述】:
我使用 C# 创建了一个控制台应用程序,并使用 Process 从另一个 Windows 窗体应用程序调用它。
以下是我的控制台应用程序代码
static void Main(string[] args)
{
try
{
// ...my code
}
catch (Exception)
{
throw;
}
}
以下是使用进程从窗口应用程序调用控制台应用程序的exe的代码
public void CallExe()
{
try
{
Process proc = new Process();
proc.StartInfo.FileName = @"D:\Debug\console1.exe";
proc.StartInfo.Arguments = "My args";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
string stdout = proc.StandardOutput.ReadToEnd();
string stderr = proc.StandardError.ReadToEnd();
proc = null;
}
catch (Exception ex)
{
throw ex;
}
}
现在,我想要的是当控制台应用程序出现任何错误时 它直接抛出到我的窗口应用程序捕获块。或者我可以在控制台应用程序抛出的窗口应用程序中收到错误消息吗?
【问题讨论】:
-
您无法捕获另一个进程中发生的错误,但您可以从控制台应用返回退出代码。
-
我可以从控制台应用程序中获取 ex.message 吗?
-
你可以specify an exit code是一个整数,从
Process.ExitCode取。或者你可以从/向 StandardOutput 或 StandardError 读/写任何你想要的东西 -
你可以做的是进程间通信:在你的控制台进程中捕获异常,有一个到你的另一个进程的管道,然后在那个管道上写一个序列化的异常......在另一边阅读它,并且... 甚至可能就下一步做什么给出命令?!
-
IPC 示例? ...给你...msdn.microsoft.com/en-US/en-en/library/bb546085(v=vs.110).aspx
标签: c# error-handling process console-application