我正在使用Process.Start()异步触发进程。然后我等待它使用Process.WaitForExit()完成。在这之前情况很好。但我希望完成的进程在完成时将自定义对象发送回调用方。有没有办法做到这一点?
答案 0 :(得分:1)
没有。没有'对象'可以属于僵尸进程。
如果您需要IPC(进程间通信),则必须在进程处于活动状态时执行此操作。您有很多选择技术(共享内存,命名管道,COM,RPC,LRPC,HTTP,WCF等等),但(几乎)所有要求进程处于活动状态。< / p>
您可能需要考虑使用文件。子进程写入文件然后终止,然后父进程读取该文件。这是相当标准的。
一个IPC异常是排队通信。这需要您使用一些排队技术。阅读Message Queuing (MSMQ)。
答案 1 :(得分:0)
我能够使用以下代码完成它。 newProcess终止后,将在调用者中捕获newProcess的标准输出。
newProcess.StartInfo.FileName = "Auto_Process2.exe";
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.UseShellExecute = false;
if (newProcess.Start())
{
while (!newProcess.StandardOutput.EndOfStream)
{
newProcessOutput = newProcess.StandardOutput.ReadLine();
}
}