public IAsyncResult BeginOpen(AsyncCallback callback, object callbackData) { lock (m_lock) { // create the channel. m_channel = new TcpClientChannel( Guid.NewGuid().ToString(), m_bufferManager, m_quotas, m_settings.ClientCertificate, m_settings.ServerCertificate, m_settings.Description); // begin connect operation. return m_channel.BeginConnect(this.m_url, m_operationTimeout, callback, callbackData); } }