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); } } } }
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; } }