using System.Diagnostics; namespace Estsh.Client.Common.CostomTraceListener { public class ControlTraceListener : TraceListener { private Control _control; private delegate void StringSendDelegate(string msg); private StringSendDelegate _invokeWrite; public ControlTraceListener(Control target) { _control = target; _invokeWrite = new StringSendDelegate(SendString); } public override void Write(string message) { _control.Invoke(_invokeWrite, new object[] { message }); } public override void WriteLine(string message) { _control.Invoke(_invokeWrite, new object[] { message + Environment.NewLine }); } private void SendString(string msg) { _control.Text += msg; } } }