主要实现方法,继承TraceLinster类,重写构造参数,重写Write和WriteLine方法就可以了,具体代码如下:
Code
1 public class ControlTraceListener : TraceListener
2 {
3 private Control _control;
4 private StringSendDelegate _invokeWrite;
5 private delegate void StringSendDelegate(string msg);
6
7 public ControlTraceListener(Control target)
8 {
9 _control = target;
10 _invokeWrite = new StringSendDelegate(SendString);
11 }
12
13 public override void Write(string message)
14 {
15 _control.Invoke(_invokeWrite, new object[] { message });
16 }
17
18 public override void WriteLine(string message)
19 {
20 _control.Invoke(_invokeWrite, new object[] { message + Environment.NewLine });
21 }
22
23 private void SendString(string msg)
24 {
25 // No need to lock control as this function will only
26 // ever be executed from the UI thread
27 _control.Text += msg;
28 }
29 }
30