protected override void Dispose(DisposeTypes type) { if (disposed) { return; } //Release your own unmanaged resources here. //You should not access any managed member here except static instance. //because the execution order of Finalizes is non-deterministic. if (this != null && _progressBarValueChangedCallbackDelegate != null) { ProgressBarValueChangedSignal valueChanged = ValueChangedSignal(); valueChanged?.Disconnect(_progressBarValueChangedCallbackDelegate); valueChanged?.Dispose(); } base.Dispose(type); }