【发布时间】:2012-05-24 23:53:30
【问题描述】:
我正在将控制台应用程序转换为 Windows 窗体应用程序和 DLL。 Windows 窗体应用程序使用 BackgroundWorker 让 DLL 执行计算量大的任务。
从控制台应用程序遗留下来的 DLL 仍然充满了Console.WriteLine() 语句。我想将过去打印到控制台的内容引导到 Windows 窗体中的 TextBox 中。理想情况下,我想在表单初始化期间将来自 DLL 的流连接到文本框并完成它。我担心这对于 BackgroundWorker 可能不是线程安全的。
我发现的最佳方法是将 DLL 中的 Console.WriteLine() 更改为 Trace.WriteLine(),然后按照 Trace listener to write to a text box (WPF application) 的方法进行操作,但我仍然对 BackgroundWorker 有疑虑,并且不太热衷于将文本附加到现有的字符串(有很多文本,IMO 字符串并不意味着/优化为在它们上面连接大量文本)。
将旧控制台输出打印到使用 BackgroundWorker 安全的文本框的最佳方法是什么?
【问题讨论】:
-
它必须在生成时打印还是可以在最后一次打印?而这个问题更关注跨线程调用的机制,或者在不更改代码的情况下捕获
Console.WriteLine输出? -
我希望它在生成输出时或(更合理地)在引发“ReportProgress”事件时打印。
标签: c# console backgroundworker console-application trace