将控制台应用程序转换为使用BackgroundWorker的GUI

时间:2012-05-24 23:53:31

标签: c# console backgroundworker console-application trace

我正在将控制台应用程序转换为Windows窗体应用程序和DLL。 Windows窗体应用程序使用BackgroundWorker使DLL执行计算量很大的任务。

从控制台应用程序遗留下来,DLL仍然充斥着Console.WriteLine()个语句。我想将以前打印到控制台的内容导入Windows窗体中的TextBox。理想情况下,我想在表单初始化期间将DLL从DLL挂到文本框,并完成它。我担心这可能不是BackgroundWorker的线程安全。

我找到的最佳方法是将DLL中的Console.WriteLine()更改为Trace.WriteLine(),然后按照Trace listener to write to a text box (WPF application)的方法进行操作,但我仍然对BackgroundWorker感到担心,并且不太热衷将文本附加到现有字符串(有很多文本和IMO字符串不意味着/优化,以便在它们上连接大量文本)。

将旧控制台输出打印到使用BackgroundWorker安全的文本框的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

以下博客文章可能是您要找的内容:

http://saezndaree.wordpress.com/2009/03/29/how-to-redirect-the-consoles-output-to-a-textbox-in-c/

我认为它完全描述了你的要求。基本上它使用Console.SetOut将控制台输出重定向到您自己的流编写器。阅读帖子下面的评论,了解有关处理线程问题的其他信息。