Start.Process() 中的某些内容不起作用

本文关键字:不起作用 Process Start | 更新日期: 2023-09-27 18:32:55

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

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

Start.Process() 中的某些内容不起作用

启动后立即杀死它

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();
首先,

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

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

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

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.