如何使用c#控制台同时进行输入和日志记录
How to use C# console for input and logging at the same time
我有一个c#控制台应用程序。我正在启动另一个cmd进程来使用我的NodeJS应用程序(也许有任何关于如何做到这一点的建议?我必须同时运行两个,它们是一起工作的。
现在NodeJS处理它的输出流到我的c#控制台。
private readonly Process _nodeProcess = new Process
{
StartInfo =
{
FileName = "cmd",
Arguments = @"/K Node server.js",
UseShellExecute = false,
RedirectStandardOutput = true
}
};
internal void Start()
{
_nodeProcess.Start();
using (StreamReader reader = _nodeProcess.StandardOutput)
{
while (true)
{
string result = reader.ReadLine();
Console.WriteLine(result);
}
}
}
这很好。现在的问题是,我的Node记录了一些东西,但同时我希望能够在我的控制台上给出命令(输入)。
我的控制台输出示例:(当然它使用了整个系统,输出真实的东西…)
NodeJS process started
node log 1
node log 2
node log ...
等等…
但是,当它继续输出我的日志行时,我希望能够使用Console.ReadLine();
输入(用于命令输入)。这样就不会有在与输出行相同的行中输入的风险。
我将感激任何帮助。任何改进我的代码的建议都是欢迎的。
在您的情况下,最好异步处理输出
首先在输出中添加一个eventandler:
_nodeProcess.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
然后在_nodeProcess.Start();
_nodeProcess.BeginOutputReadLine();
行 类似:
_nodeProcess.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
_nodeProcess.Start();
_nodeProcess.BeginOutputReadLine();
var line = Console.ReadLine();
while (line != null && line.ToLower() != "exit")
{
line = Console.ReadLine();
}
_nodeProcess.Close();
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- 按压“;输入“;将值打印到控制台日志
- 角度文本输入提交无法触发控制台日志
- 使用奇怪的控制台日志结果向输入日期添加天数
- 将纬度和日志作为天气 API 中的输入传递的任何选项
- 从输入中获取数据,并在提交按钮上单击控制台日志记录数据
- 如何使用c#控制台同时进行输入和日志记录
- 如何取消 log4js 输入日志文件的颜色标志
- 如何检测机器人垃圾邮件形式和日志ip &输入