2012-01-31 48 views
2

是否有可能从启动的进程向控制台写入错误消息?通常我们习惯于从控制台内使用Console.Writeline()。额外的过程(在另一个程序集中)被设计为由控制台操作,并可能通过GUI进行操作。如何从后台线程的事件循环写入控制台?


但是,如果我们重视(即回调)方法,将事件处理程序,然后Console.WriteLine不工作。

目前正在使用:

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

随后,回调可能会被解雇了,它在这里,控制台消息失踪。

+0

它应该仍然使用'Console.WriteLine()'。你有错误吗? – 2012-01-31 14:44:58

回答

2

Console.WriteLine()也应该工作。

更新:

如果你想捕捉一些控制台应用程序的输出,请看一看Capturing console output from a .NET application (C#)

+0

+1:有用的信息。不是另一个控制台应用程序只是另一个内部线程。 – sgtz 2012-02-01 17:35:02

1

我不太确定,如果我理解正确。你想从一个子进程的标准输出中读取并写入父进程的控制台吗?然后您可以使用Process.StandardOutput属性获取StreamReader并开始阅读。

+0

这是一个使用第三方程序集的.n​​et程序集。我想知道第三方.dll是否在回调事件中吮吸控制台控制台数据。那可能吗?我更新了这个问题。 – sgtz 2012-02-01 17:34:22

2

如果您担心两条信息混合在一起,为什么不使用Console.Error.WriteLine()?然后,您可以将执行时的错误流重定向到(例如)一个文件。

+0

+1:ty。不介意两条河流是否融合在一起。只关心一个流根本没有出现。只是想在执行过程中看到在控制台中弹出的信息。我已经更新了这个问题。 – sgtz 2012-02-01 17:41:34

1

如果使用标准的.NET跟踪,你可以通过在app.config配置ConsoleTraceListenerhttp://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener.aspx

这种方法更多的是通过这个问题探讨: Redirect Trace output to Console

这是相当不错的诊断你提到的目的。您可以连接文本文件编写器等。

+0

+1:ty。这是非常方便的信息。问题是即使Console.WriteLine失败。我已经更新了一些问题。 – sgtz 2012-02-01 17:39:31

1

这是一个外部的编译过程,即可执行文件吗?

如果您正在使用Process类来启动该过程,您可能正在寻找Process.StandardOutput属性,该属性可让您将通常写入控制台的文本重定向到另一个流。

否则,你能澄清一下你在谈论什么样的“过程”吗?

+0

这不是一个外部编译过程。尽管知道这一点很有用。 – sgtz 2012-02-01 17:44:32