在Start.Process()中使用/的东西不起作用

时间:2013-09-25 13:31:20

标签: c# process console-application system.diagnostics

我的控制台应用程序中有一个空白,它打开一个外部控制台应用程序,以比较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();
        }
    }

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

3 个答案:

答案 0 :(得分:1)

首先,你似乎在启动之后立即将其杀死,所以除非它能够像纳秒一样做它所做的事情,它永远不会输出任何东西

答案 1 :(得分: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();

答案 2 :(得分:0)

你在启动它之后就立即杀了它。

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

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.