private bool _isDisposed = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!_isDisposed) { if (disposing) { _altaxoDrawingGeometry?.Dispose(); _altaxoDrawingGeometry = null; _altaxoMarkerGeometry?.Dispose(); _altaxoMarkerGeometry = null; _altaxoOverlayGeometry?.Dispose(); _altaxoOverlayGeometry = null; _altaxoCamera = null; _altaxoLightSettings = null; } if (null != _cachedDevice) { Detach(); } _isDisposed = true; } }