トップ回答者
TraceListenerをフォームに渡す

質問
回答
-
>TraceListener
ちなみに、わざわざTraceListenerを継承したログクラスを作らずとも、
以下のような感じで出来ませんか?
// 各スレッドからのログ出力を呼び出すイメージ private void SampleThread() { ListBoxWriter("Log Message.", TraceLevel.Info); } // ログ出力メソッドをInvoke呼び出しするメソッド private void ListBoxWriter(string message, TraceLevel tl) { ListBoxWriterDelegate d = new ListBoxWriterDelegate(UIListBoxWriter); this.Invoke(d, new object[] { message, tl }); } // ListBoxログ出力用のデリゲート delegate void ListBoxWriterDelegate(string hoge, TraceLevel tl); // Invokeで呼び出されるメソッド public void UIListBoxWriter(string message, TraceLevel tl) { lock (this.listBox1) { this.listBox1.Items.Add(message); if (this.listBox1.Items.Count > 50) this.listBox1.Items.RemoveAt(0); } }
- 回答としてマーク metal_socket 2010年8月6日 5:46
すべての返信
-
TraceListenerはスレッドセーフですので、マルチスレッドからの操作でも安全に利用できます。
http://msdn.microsoft.com/ja-jp/library/hy72797k(v=VS.80).aspx
>フォームのListBoxにデータを渡すことは可能でしょうか?
TraceListenerクラスを継承した独自のクラスを定義することで可能と思われます。
以下参考になりますでしょうか。
-
>TraceListener
ちなみに、わざわざTraceListenerを継承したログクラスを作らずとも、
以下のような感じで出来ませんか?
// 各スレッドからのログ出力を呼び出すイメージ private void SampleThread() { ListBoxWriter("Log Message.", TraceLevel.Info); } // ログ出力メソッドをInvoke呼び出しするメソッド private void ListBoxWriter(string message, TraceLevel tl) { ListBoxWriterDelegate d = new ListBoxWriterDelegate(UIListBoxWriter); this.Invoke(d, new object[] { message, tl }); } // ListBoxログ出力用のデリゲート delegate void ListBoxWriterDelegate(string hoge, TraceLevel tl); // Invokeで呼び出されるメソッド public void UIListBoxWriter(string message, TraceLevel tl) { lock (this.listBox1) { this.listBox1.Items.Add(message); if (this.listBox1.Items.Count > 50) this.listBox1.Items.RemoveAt(0); } }
- 回答としてマーク metal_socket 2010年8月6日 5:46