public override object MatchFound(string host, string name, bool isPrivate)
            {
                string processedVirtualPath = CreateRelativeVirtualPath(host, name, isPrivate);
                string relativeServiceFile  = ServiceHostingEnvironment.NormalizeVirtualPath(processedVirtualPath);

                // Compute the remainder path:
                if (isPrivate)
                {
                    lock (this.thisLock)
                    {
                        string baseQueue = CreateBaseQueue(relativeServiceFile);
                        this.privateMatches[baseQueue] = baseQueue;
                    }
                }

                // Start the service on a different thread so we can complete
                // initialization
                if (CheckServiceExists(relativeServiceFile))
                {
                    MsmqDiagnostics.StartingService(host, name, isPrivate, processedVirtualPath);
                    ActionItem.Schedule(StartService, processedVirtualPath);
                }

                // no callback state here...
                return(null);
            }
            public override object MatchFound(string host, string name, bool isPrivate)
            {
                string virtualPath = this.CreateRelativeVirtualPath(host, name, isPrivate);
                string serviceFile = ServiceHostingEnvironment.NormalizeVirtualPath(virtualPath);

                lock (this)
                {
                    if (isPrivate)
                    {
                        string str3 = this.CreateBaseQueue(serviceFile);
                        this.privateMatches[str3] = str3;
                    }
                }
                if (this.CheckServiceExists(serviceFile))
                {
                    MsmqDiagnostics.StartingService(host, name, isPrivate, virtualPath);
                    ActionItem.Schedule(new Action <object>(this.StartService), virtualPath);
                }
                return(null);
            }