public async Task Run(CancellationToken cancelToken) { try { _listener = new GCEventListener(OnGarbageCollected); while (!cancelToken.IsCancellationRequested) { lock (_outputHealthLock) { OutputHealthInfo(); } await Task.Delay(monitorInterval, cancelToken); } } catch (OperationCanceledException) { _listener.Dispose(); _listener = null; } }
protected override void DisposeManagedResources() { _listener?.Dispose(); }