运行其他进程后C#程序退出

时间:2011-08-12 08:33:23

标签: c# process 7zip

这个问题很奇怪。我以前从未遇到过这样的事情。 我试图让我的程序使用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秒)

2 个答案:

答案 0 :(得分:3)

如果此代码在Main()中,那么当代码执行完毕时它将完成。您可以发布包含此代码段的完整代码吗?

您可以通过加入

等待该过程完成
process.WaitForExit();

检查ExitCode可能会告诉您进程是否成功。并且您始终可以重定向StandardError以检查其输出。

process.StartInfo.RedirectStandardError = true;
string error = process.StandardError.ReadToEnd();

答案 1 :(得分:1)

在process.Start()...

之后尝试process.WaitForExit()