public virtual void Dispose() { if (!_isDisposed) { _isDisposed = true; OnDispose(); OnDisposed?.BeginInvoke(null, null); } }