internal void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { lineTimeoutManager?.Dispose(); IsListening = false; NamedPort?.Dispose(); } disposed = true; }
private void Listen() { while (IsListening) { // use Monitor to prevent possible exceptions when Disposing an active Listener if (Monitor.TryEnter(NamedPort)) { try { if (NamedPort.HasDataAvailable()) { string msg = NamedPort.Read(); lineTimeoutManager.LastDataReceived = DateTimeEx.Now; PortDataParser.AppendAndParse(msg); } } finally { Monitor.Exit(NamedPort); } } } }