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();
}
}
如果有人能告诉我它有什么问题,我将不胜感激! :)
启动后立即杀死它
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.