using (var process = new Process()
{
StartInfo = {
FileName = "net.exe",
Arguments = @"use \\127.0.0.1\abc /user:test",
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true
}
})
{
process.OutputDataReceived += (sender, eventArgs) => Console.WriteLine(eventArgs.Data);
process.ErrorDataReceived += (sender, eventArgs) => Console.WriteLine(eventArgs.Data);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
string line;
while ((line = Console.ReadLine()) != "stop") process.StandardInput.WriteLine(line);
process.Close();
}
当您在cmd中运行此命令时,它会要求您输入密码,但是,当我执行相同的命令时,我将不会收到任何输出,直到该过程终止。它甚至不等我输入密码 代码有问题吗?我误解了什么吗? 它还会遇到一些其他进程,如systeminfo.exe。
注意:我不是为了使用“网络使用”而构建的。命令,这只是一个测试应用程序,可以在修复此问题之前尝试一些操作。
答案 0 :(得分:0)
当进程的输出在内部缓冲时,其行为可能会以微妙的方式改变,具体取决于输出的目标。如果输出是控制台,则写入行尾字符会自动刷新输出缓冲区。当输出是文件或其他一些流(例如,另一个试图读取其输出的程序)时,打印输出可能会保持缓冲,直到发生以下三种情况之一:
您似乎正在观察第三个案例。