0

コンソール アプリケーションを Windows フォーム アプリケーションと DLL に変換しています。Windows フォーム アプリケーションは BackgroundWorker を使用して、DLL に計算負荷の高いタスクを実行させます。

コンソール アプリケーションから取り残された DLL には、まだConsole.WriteLine()ステートメントが散らばっています。TextBox以前はコンソールに出力されていたものを Windows フォームに出力したいと考えています。理想的には、フォームの初期化中に DLL からテキスト ボックスまでストリームをフックし、それで完了したいと考えています。これが BackgroundWorker でスレッドセーフではない可能性があることを懸念しています。

私が見つけた最良のアプローチは、DLL に変更Console.WriteLine()し、Trace リスナーTrace.WriteLine()のアプローチに従ってテキスト ボックス (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 に答える