예제 #1
0
        void HeartBeatThreadFunc(object obj)
        {
            int HeartBeatMissedCnt = 0;

            while (!HeartBeatThreadExit)
            {
                System.Threading.Thread.Sleep(1000);

                if (ExecHeartBeat())
                {
                    HeartBeatMissedCnt = 0;
                }
                else
                {
                    HeartBeatMissedCnt++;
                }

                if (HeartBeatMissedCnt >= HeartBeatMissedCnt_MAX)
                {
                    _ConnectStatus = ConnectStatusEnum.CONNECTLOST;
                    StopHeartBeat();
                    if (ConnectLost != null)
                    {
                        CommArgs args = new CommArgs();
                        args.ReaderID = 0;
                        args.addr     = AddrStr;
                        args.port     = port_baud;
                        ConnectLost.BeginInvoke(this, args, null, null);
                    }
                }
            }
        }
예제 #2
0
파일: Transfer.cs 프로젝트: lonelyong/NgNet
 /// <summary>
 /// 连接中断
 /// </summary>
 protected virtual void OnConnectLost()
 {
     if (!IsAlive)
     {
         return;
     }
     InnerStop(true);
     ConnectLost?.Invoke(this, new EventArgs());
 }