如何从后台线程写入控制台';s事件循环
本文关键字:循环 事件 控制台 后台 线程 | 更新日期: 2023-09-27 18:21:56
是否可以从已启动的进程向控制台写入错误消息?通常我们习惯于在控制台中使用Console.Writeline()。附加进程(在另一个程序集中)被设计为由控制台操作,并且可能还通过GUI操作。
但是,如果我们将方法附加到事件处理程序(即回调),则Console.WriteLine不起作用。
当前使用:
var thread=new Thread(someMethod);
thread.Start();
随后,回调可能会被触发,控制台消息就会丢失。
Console.WriteLine()
也应该工作。
更新:
如果您想捕获某些控制台应用程序的输出,请查看从.NET应用程序(C#)捕获控制台输出。
如果您担心两个消息流混合,为什么不使用Console.Error.WriteLine()
呢?然后,您可以在执行时将错误流重定向到(例如)一个文件。
我不太确定我是否正确理解了这一点。您想读取子进程的标准输出并在父进程的控制台中写入吗?然后,您可以使用Process.StandardOutput属性来获取StreamReader
并开始读取。
如果使用标准的.NET跟踪,则可以通过app.config配置ConsoleTraceListener
:http://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener.aspx
通过这个问题对这种方法进行了更多的探讨:将跟踪输出重定向到控制台
正如你所提到的,它非常适合用于诊断目的。您可以连接文本文件编写器等。
这是一个外部编译过程,即可执行文件吗?
如果您正在使用Process类启动进程,则可能正在查找Process.StandardOutput属性,该属性将允许您将通常写入控制台的文本重定向到另一个流。
否则,你能澄清一下你说的是什么样的"过程"吗?