【问题标题】:Something with/in Start.Process() is not working带有/在 Start.Process() 中的东西不起作用
【发布时间】:2013-09-25 13:31:20
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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();
    

    【讨论】:

    • 我知道 Compare.Kill();,我使用它是因为我收到关于无限循环的错误。但是由于您的某些行,错误现在消失了:)谢谢
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您在启动进程后立即杀死它。

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

      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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-01
        • 2015-10-25
        • 2019-07-13
        • 2020-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        相关资源
        最近更新 更多