private void _checkport(object state) { int size = 0; if (Status == PortStatus.CLOSED) { return; } lock (_serial) { if (_serial.BytesToRead > 0) { size = _serial.Read(rbuf, 0, _serial.BytesToRead); } } if (size <= 0) { return; } int p = 0; while (size-- >= 0) { ifrm.pushc(rbuf[p++]); if (ifrm.flag == RF_STATE.RF_CKSUM) { if (InFrameHandlers.ContainsKey(ifrm.addr)) { InFrameHandlers[ifrm.addr](ifrm); } ifrm.ResetFlag(); } } }