我的控制台应用程序中有一个空白,它打开一个外部控制台应用程序,以比较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();
}
}
如果有人能告诉我它有什么问题,我将不胜感激! :)
答案 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.