0

我的控制台应用程序中有一个空白,它打开一个外部控制台应用程序,以比较 2 个文本文件。

我没有收到任何错误,所以我认为它正在工作。但是当我查看输出时,我什么也没看到。当我打开比较文本文件的应用程序时,它运行良好。所以我认为虚空一定有什么问题。

这是我的代码。我使用了来自 MSDN 以及 stackoverflow 和其他网站的示例组合。但目前还没有。也许这真的很明显,我只是愚蠢哈哈

using System.IO;
using System.Security.Permissions;
using System.Diagnostics;

static void Compare()
    {
        Process Compare = new Process();

        try
        {
            Compare.StartInfo.UseShellExecute = false;
            Compare.StartInfo.FileName = @"C:\Path\To\The\File.exe";
            Compare.StartInfo.CreateNoWindow = true;
            Compare.Start();
            Compare.Kill();
        }

        catch (Exception)
        {
            Compare.Kill();
        }
    }

如果有人能告诉我它有什么问题,我将不胜感激!:)

4

3 回答 3

1

首先,您似乎在启动它后立即将其杀死,所以除非它可以在几纳秒内完成它必须做的事情,否则它永远不会输出任何东西

于 2013-09-25T13:33:59.067 回答
1

您在启动后立即杀死它

Compare.Start();
Compare.Kill();

删除Compare.Kill(); 线,然后再试一次。

此外,如果你想从启动的进程中接收详细的输出,你将不得不使用异步事件:

 Process process = new Process();
 process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);     
 process.Exited += new EventHandler(process_Exited);
 process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); 
 process.Start();    
 process.BeginOutputReadLine();
 process.BeginErrorReadLine();    
 process.WaitForExit();
于 2013-09-25T13:34:09.653 回答
0

您在启动进程后立即终止进程。

如果进程自行退出,您可以执行以下操作:

Compare.StartInfo.UseShellExecute = false;
Compare.StartInfo.FileName = @"C:\Path\To\The\File.exe";
Compare.StartInfo.CreateNoWindow = true;
Compare.Start();
Compare.WaitForExit();

如果您只想给它这么多时间来执行:

Compare.WaitForExit(5000); //Wait 5 seconds.
于 2013-09-25T13:36:41.480 回答