コード例 #1
0
ファイル: TcpBase.cs プロジェクト: dycx880709/Ms_Libs_TcpLib
        private async void NotifyConnectStateChanged(ConnectStateArgs connectStateArgs, string error)
        {
            if (connectStateArgs.ConnectState == ConnectState.Faild)
            {
                IsConnected = false;
                lock (lockConnectStatus)
                {
                    //isStart = false;
                    if (client != null)
                    {
                        client.Close();
                    }
                }
                if (taskReceive != null)
                {
                    await taskReceive;
                }
                //if (taskQueue != null) await taskQueue;
            }
            connectStateArgs.IsStop = isStop;
            connectStateArgs.Error  = error;

            if (ConnectStateChanged != null)
            {
                var handlers = ConnectStateChanged.GetInvocationList();
                if (handlers != null)
                {
                    foreach (EventHandler <ConnectStateArgs> item in handlers)
                    {
                        item.BeginInvoke(this, connectStateArgs, null, null);
                    }
                }
            }
        }
コード例 #2
0
        private void TcpProxy_ConnectStateChanged(object sender, ConnectStateArgs e)
        {
            switch (e.ConnectState)
            {
            case ConnectState.Success:
                //await Login(sender as TcpBase);
                break;

            case ConnectState.Faild:
                are.WaitOne();
                var t = tcpProxyThreads.FirstOrDefault(f => f.TcpProxy == sender);
                if (t != null)
                {
                    tcpProxyThreads.Remove(t);
                }
                are.Set();
                break;
            }
        }