/// <summary>
        /// Executes when the ConnectionManager service returns on the subscribe status.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="success"></param>
        private void Sink_OnCmServiceSubscribe(CpConnectionManager sender, bool success)
        {
            sender.OnSubscribe -= new CpConnectionManager.SubscribeHandler(this.Sink_OnCmServiceSubscribe);
            string udn = sender.GetUPnPService().ParentDevice.UniqueDeviceName;

            lock (LockHashes)
            {
                InitStatus status = (InitStatus) UdnToInitStatus[udn];
                if (status != null)
                {
                    status.ZeroMeansDone--;
                    status.SubcribeCM = success;
                    this.ProcessInitStatusChange(udn);
                }
            }
        }
        /// <summary>
        /// Executes when the ConnectionManager events for the first time.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="newVal"></param>
        private void Sink_OnCmEvented(CpConnectionManager sender, string newVal)
        {
            sender.OnStateVariable_SourceProtocolInfo -= new CpConnectionManager.StateVariableModifiedHandler_SourceProtocolInfo(this.Sink_OnCmEvented);
            string udn = sender.GetUPnPService().ParentDevice.UniqueDeviceName;

            lock (LockHashes)
            {
                InitStatus status = (InitStatus) UdnToInitStatus[udn];
                if (status != null)
                {
                    status.ZeroMeansDone--;
                    status.EventedCM = true;
                    this.ProcessInitStatusChange(udn);
                }
            }
        }