public object ReadData(int timeout = -1) { try { if (!isClosing) { //lock (_dataObject) //{ // _isDataUpdated = false; // _dataBuf = _dataObject.Read(); // return _dataBuf; //} _dataBuf = _dataObject.Read(true); _isDataUpdated = false; return(_dataBuf); } else { return(_dataBuf); } } catch (Exception ex) { if (Marshal.GetHRForException(ex) != -2147467259) { throw ex; } else { return(_dataBuf); } } }