我正在将控制台应用程序转换为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安全的文本框的最佳方法是什么?
答案 0 :(得分:2)
以下博客文章可能是您要找的内容:
http://saezndaree.wordpress.com/2009/03/29/how-to-redirect-the-consoles-output-to-a-textbox-in-c/
我认为它完全描述了你的要求。基本上它使用Console.SetOut
将控制台输出重定向到您自己的流编写器。阅读帖子下面的评论,了解有关处理线程问题的其他信息。