这个问题很奇怪。我以前从未遇到过这样的事情。 我试图让我的程序使用7zip提取文件。我之前在其他程序中已经这样做过,而且从来没有太难过。所以我复制并粘贴了我的代码:
Process process = new Process
{
StartInfo =
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "7za.exe",
UseShellExecute = false,
ErrorDialog = false,
Arguments = "x -y -o\"" + outputPath +"\" \""+ inputFile +"\"",
RedirectStandardOutput = false,
}
};
process.Start();
此代码运行后,我的应用程序立即终止。它只是消失了。这当然不是故意的!我使用了步骤进入功能并运行它。一旦process.Start();
完成程序关闭并将我返回到Visual C#中。它没有运行任何Application.Exit();
或任何东西,它只是消失了。在Visual C#中没有等待我的错误。
所以我尝试在最后添加MessageBox.Show("Test");
。以步进模式运行它。 process.Start();
没问题,只要它执行MessageBox代码就会再次消失。我甚至没有在消息框中单击确定(在应用程序终止前显示约0.2秒)
答案 0 :(得分:3)
如果此代码在Main()中,那么当代码执行完毕时它将完成。您可以发布包含此代码段的完整代码吗?
您可以通过加入
等待该过程完成process.WaitForExit();
检查ExitCode
可能会告诉您进程是否成功。并且您始终可以重定向StandardError以检查其输出。
process.StartInfo.RedirectStandardError = true;
string error = process.StandardError.ReadToEnd();
答案 1 :(得分:1)
在process.Start()...
之后尝试process.WaitForExit()