/// <summary>
        /// Initializes the proxy domain loader.
        /// </summary>
        /// <param name="source">The source.</param>
        public void Initialize(string source)
        {
            this.proxyDomain.Initialize(source);

            Trace.Listeners.Add(this.delegateTraceListener);

            CrossDomainTraceHelper.StartListening(this.appDomainHelper.AppDomain, this.textWriter);
        }
Esempio n. 2
0
        private void Register(CrossDomainTraceHelper parentDomain, TextWriter parentConsoleWriter)
        {
            // Store the parent domain to pass messages to later
            this.parentDomain = parentDomain;

            // Create and register the delegate trace listener
            var traceListener = new DelegateTraceListener(this.TraceWrite, this.TraceWriteLine);

            Trace.Listeners.Add(traceListener);
            Console.SetOut(parentConsoleWriter);
        }
Esempio n. 3
0
        /// <summary>
        /// Starts listening for trace messages on the specified application domain.
        /// </summary>
        /// <param name="domain">The domain.</param>
        /// <param name="consoleWriter">The console writer.</param>
        public static void StartListening(AppDomain domain, TextWriter consoleWriter)
        {
            var listenerType = typeof(CrossDomainTraceHelper);

            // Create a remote instance
            var remoteHelper =
                (CrossDomainTraceHelper)domain.CreateInstanceAndUnwrap(
                    listenerType.Assembly.FullName,
                    listenerType.FullName);

            // Create a local instance
            var localHelper = new CrossDomainTraceHelper();

            // Register the local helper in the remote domain
            remoteHelper.Register(localHelper, consoleWriter);
        }