public CrossDomainTracer(AppDomain farDomain)
 {
     AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
     this.remoteTracer = farDomain.CreateInstanceFrom(Assembly.GetExecutingAssembly().Location, typeof(CrossDomainTracer).FullName).Unwrap() as CrossDomainTracer;
     AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(CurrentDomain_AssemblyResolve);
     if (remoteTracer != null)
     {
         remoteTracer.StartListening(this);
     }
 }
 public void StartListening(CrossDomainTracer farTracer)
 {
     this.remoteTracer   = farTracer;
     this.remoteListener = new SynchronizedTraceListener(new TraceWriterHandler(Write));
     Trace.Listeners.Add(this.remoteListener);
 }