"明らかにFormsアプリケーションのコンソールに書き込むことはできません。
これはまったく真実ではありません。 はにコンソールを割り当て、そのコンソールに情報を書き込むことができます。だからあなたのフォームとあなたの出力を書いているコンソールを持っています。これはデバッグに最適です。
また、コンソール出力をファイルにリダイレクトすることもできます。 StreamWriter
への参照をConsole.SetOut
に渡すだけで、コンソールに書き込んでいたものはすべてそのファイルに移動します。非公式のロギングを行うには最適な方法です。
Windowsフォームアプリケーションでメソッドの出力とエラーメッセージを表示したい場合は、出力を送信するためにそれらをどこかに与える必要があります。おそらく、あなたのライブラリメソッドをたくさん書き直す必要があります。考え方は、コンソールに書き込むのではなく、それらのメソッドがあなたが提供する出力メソッドを呼び出すということです。 そのメソッドはおそらくインターフェイスの一部です。それでも、すべてのユーザーインターフェイスのシナリオで情報を報告する方法をライブラリが知っていることを前提としているため、これは特に効果的な方法ではありません。
一般に、ワーカー・メソッドがユーザー・インターフェース出力を提供しないようにするのが一般的です。ロギングは確かですが、おそらくファイルからのデータをロードしてユーザーに出力する機能(「ファイルから287レコードをロードした」)は望ましくないでしょう。もちろん、一例であり、
// in your console program
List<Thing> things = LoadThingsFromFile("filename.txt");
Console.WriteLine($"Loaded {things.Count} things from file.");
// in your Windows Forms application
List<Thing> things = LoadThingsFromFile("filename.txt");
StatusLine.Text += $"Loaded {things.Count} things from file.";
StatusLine.Text
:代わりに、あなたのような何かを持っています。これをスクロールリストに入れたり、メッセージボックスをポップアップしたりするなど、処理コードではなくUIコードで情報をユーザーに伝達する方法を決定することが重要です。
たとえば、ストリームに書き込んでいる1つのdllを持つことができます(これにはStreamWriterを使用できます)。ストリームをDllメインオブジェクトコンストラクタに渡すと、dllはそのストリームで動作します。ストリームとして、Console.OpenStandardOutput()またはFileStreamなどを渡すことができます。 –