如何从后台线程写入控制台';s事件循环

本文关键字:循环 事件 控制台 后台 线程 | 更新日期: 2023-09-27 18:21:56

是否可以从已启动的进程向控制台写入错误消息?通常我们习惯于在控制台中使用Console.Writeline()。附加进程(在另一个程序集中)被设计为由控制台操作,并且可能还通过GUI操作。


但是,如果我们将方法附加到事件处理程序(即回调),则Console.WriteLine不起作用。

当前使用:

var thread=new Thread(someMethod);
thread.Start();

随后,回调可能会被触发,控制台消息就会丢失。

如何从后台线程写入控制台';s事件循环

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属性,该属性将允许您将通常写入控制台的文本重定向到另一个流。

否则,你能澄清一下你说的是什么样的"过程"吗?