/// <summary> /// read string from server. /// </summary> public void Read() { Task t = new Task(() => { try { if (this.IsConnected()) { string buffer; NetworkStream stream = TClient.GetStream(); BinaryReader reader = new BinaryReader(stream); rMutex.WaitOne(); buffer = reader.ReadString(); rMutex.ReleaseMutex(); if (buffer != null) { //conver message from string to messag format MsgCommand msg = JsonConvert.DeserializeObject <MsgCommand>(buffer); //invoke the message. CommandRecived?.Invoke(this, msg); } } } catch (Exception readExp) { Console.WriteLine(readExp.ToString()); } }); t.Start(); t.Wait(); }
private void RecivingCommands(CancellationToken token) { if (disposedValue) { return; } while (!token.IsCancellationRequested) { try { if (!Client.Connected) { Reconnect(); } else { byte[] buffer = new byte[4]; int len = Stream.Read(buffer, 0, buffer.Length); if (len > 0) { int bufferLength = BitConverter.ToInt32(buffer, 0); buffer = new byte[bufferLength]; Stream.Read(buffer, 0, buffer.Length); lock (clientLocker) { CommandBase command = buffer.DeserializeCommand(); CommandRecived?.Invoke(this, command); } } } } catch (Exception ex) { ClientDisconnected?.Invoke(this); } } }