【发布时间】:2014-07-30 19:07:47
【问题描述】:
这是我当前的循环。
while(!StartServer.HasExited)
{
Console.WriteLine(StartServer.StandardOutput.ReadLine());
StartServer.StandardInput.WriteLine(Console.ReadLine());
}
ServerStart 是我的进程的名称。问题是循环在继续之前等待输入。有没有办法同时运行 2 个循环? 像这样:
while(!StartServer.HasExited)
{
Console.WriteLine(StartServer.StandardOutput.ReadLine());
}
while(!StartServer.HasExited)
{
StartServer.StandardInput.WriteLine(Console.ReadLine());
}
【问题讨论】:
-
非阻塞 IO 和/或并发/线程是两个选项。
-
这实际上比起初看起来要困难得多,假设您不想在用户输入一行时做一些刻薄的事情,比如写出文本。无论如何,您是否要这样做,等到他们汇总一行,然后打印出您从其他进程收到的所有行,您想将它们写到不同的地方吗?是否要将文本写到用户正在输入的下方的行中?
-
(OP 正在尝试将服务器和控制台 stdout/stdin 相互代理 - 这在“聊天”中很常见。)
-
@user3873786 因此,当用户尝试输入内容并且其他进程有输出时,您只想将输出粘贴在他们输入的内容中间吗?你真的确定吗?