process.standardoutput.ReadToEnd总是为空

时间:2017-09-28 03:22:36

标签: c#

我尝试运行命令并将输出变为字符串,以便我可以搜索字符串以检测是否发生了某种结果。
写入控制台的输出就好了 ...
(bootloader)1
好的[0.028s]
完了。总时间:0.028s

但是,字符串结果始终为空行。我试着让它输出错误,但这只会导致没有打印到控制台上 我也尝试过类似问题的代码

var output = new StringBuilder();
var error = new StringBuilder();

cmd.OutputDataReceived += (o, e) => output.Append(e.Data);
cmd.ErrorDataReceived += (o, e) => error.Append(e.Data);

cmd.Start();
cmd.BeginOutputReadLine();
cmd.BeginErrorReadLine();
cmd.WaitForExit();  

由于输出StandardError存在而导致无法输出,因此删除它只会导致与原始问题相同的问题。我几乎可以在这里找到许多其他的东西,但是无济于事。有人请帮忙。

这是我的代码:

ProcessStartInfo unlkinfo = new ProcessStartInfo("cmd.exe", "/C 
fastboot flashing get_unlock_ability");
unlkinfo.CreateNoWindow = true;
unlkinfo.RedirectStandardOutput = true;
unlkinfo.UseShellExecute = false;
Process unlk= new Process();
unlk.StartInfo = unlkinfo;
unlk.Start();
String result = unlk.StandardOutput.ReadToEnd();
unlk.WaitForExit();
String BL1 = "(bootloader) 1";
if(result.Contains(BL1))
{
Console.WriteLine("Bootloader is unlocked!");
}
else
{
Console.WriteLine("Bootloader is locked!");
}

0 个答案:

没有答案