コード例 #1
0
        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);
                    }
                }
            });
        }
コード例 #2
0
 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;
             }
         }
     });
 }
コード例 #3
0
        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);
            }
        }