0

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

从控制台应用程序遗留下来的 DLL 仍然充满了Console.WriteLine()语句。我想将过去打印到控制台的内容引导到TextBoxWindows 窗体中。理想情况下,我想在表单初始化期间将来自 DLL 的流连接到文本框并完成它。我担心这对于 BackgroundWorker 可能不是线程安全的。

我发现的最佳方法是在 DLL 中更改Console.WriteLine()Trace.WriteLine(),然后按照Trace listener 中的方法写入文本框(WPF 应用程序),但我仍然对 BackgroundWorker 有疑虑,并且不太热衷于将文本附加到现有的字符串(有很多文本,IMO 字符串并不意味着/优化为在它们上面连接大量文本)。

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

4

1 回答 1

2

以下博客文章可能是您正在寻找的内容:

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

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

于 2012-05-25T00:13:36.327 回答