コンソール アプリケーションを Windows フォーム アプリケーションと DLL に変換しています。Windows フォーム アプリケーションは BackgroundWorker を使用して、DLL に計算負荷の高いタスクを実行させます。
コンソール アプリケーションから取り残された DLL には、まだConsole.WriteLine()
ステートメントが散らばっています。TextBox
以前はコンソールに出力されていたものを Windows フォームに出力したいと考えています。理想的には、フォームの初期化中に DLL からテキスト ボックスまでストリームをフックし、それで完了したいと考えています。これが BackgroundWorker でスレッドセーフではない可能性があることを懸念しています。
私が見つけた最良のアプローチは、DLL に変更Console.WriteLine()
し、Trace リスナーTrace.WriteLine()
のアプローチに従ってテキスト ボックス (WPF アプリケーション) に書き込むことですが、それでも BackgroundWorker に懸念があり、既存の文字列 (多くのテキストがあり、IMO 文字列は、それらに連結された多くのテキストを持つように意図されていません/最適化されていません)。
BackgroundWorker で安全な古いコンソール出力をテキスト ボックスに出力する最良の方法は何ですか?