public void StartRecievingTask() { Task.Run(async() => { while (!disposed) { if (OnRecieve == null) { Console.WriteLine("NULL!"); } if (OnRecieve != null && pendingMessages.TryDequeue(out INetworkMessage message)) { OnRecieve.Invoke(this, message); } else if (OnConnectionDropped != null && OtherEnd.disposed) { OnConnectionDropped.Invoke(this, null); Dispose(true); } else { await Task.Delay(3); } } }); }
public void StartRecievingTask() { Task.Run(() => { while (!disposed) { try { INetworkMessage m = (INetworkMessage)formatter.Deserialize(client.GetStream()); OnRecieve?.Invoke(this, m); } catch (Exception) { // It means client whether disconnected, or send something unparseable. In both cases, remove it and disconnect OnConnectionDropped?.Invoke(this, null); Dispose(true); return; } } }); }
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { var sp = (SerialPort)sender; try { var cnt = sp.ReadBufferSize; RxData = new byte[cnt + 1]; var rc = sp.Read(RxData, 0, cnt); if (cnt > 3 && RxData[0] == 1 && RxData[1] == 3 && RxData[2] == 18) { // EventArgs ea = new EventArgs(); OnRecieve?.Invoke(RxData); } } catch (Exception ex) { SetLogMessage?.Invoke(ex.Message); //ErrList.Add(ex.Message); } }