Exemple #1
0
        /// <summary>
        /// 释放连接
        /// </summary>
        public void Dispose()
        {
            UnConnection();

            try
            {
                if (baseServiceClient != null)
                {
                    baseServiceClient.Close();
                }
                if (fileServiceClient != null)
                {
                    fileServiceClient.Close();
                }
            }
            catch
            {
                if (baseServiceClient != null)
                {
                    baseServiceClient.Abort();
                }
                if (fileServiceClient != null)
                {
                    fileServiceClient.Abort();
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 卸载连接
        /// </summary>
        public void UnConnection()
        {
            if (clientObj == null)
            {
                return;
            }
            string mClientID = clientObj.ClientID;
            DuplexBaseServiceClient mWcfService = clientObj.WcfService;

            if (mClientID != null)
            {
                try
                {
                    AddMessageHeader(mWcfService.InnerDuplexChannel as IContextChannel, "Quit", (() =>
                    {
                        mWcfService.UnClient(mClientID);
                    }));


                    //mChannelFactory.Close();//关闭通道
                    mWcfService.Close();

                    if (timer != null)//关闭连接必须停止心跳
                    {
                        timer.Stop();
                    }
                }
                catch
                {
                    if ((mWcfService as IDisposable) != null)
                    {
                        (mWcfService as IDisposable).Dispose();
                    }
                }

                clientObj = null;
            }
        }