protected bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { OnDisconnect("Ipc object disposed"); if (dedicatedWriteThread) { writeTaskCancel.Cancel(); } readStream?.Dispose(); writeStream.Dispose(); readBuffer = null; ConnectedEvent?.Dispose(); } disposedValue = true; } }