internal void Invalidate() { T invalidatedInvoker = Interlocked.Exchange(ref _dynamicInvoker, null); if (invalidatedInvoker != null) // call listeners no more than once. { _invalidationListeners.InvokeAndClearAll(this); } }
private void Invalidate() { int wasValid = Interlocked.Exchange(ref _isValid, 0); if (wasValid == 1) { _diagnosticSourceInvoker.Handle.Invalidate(); _diagnosticListenerInvoker.Handle.Invalidate(); _invalidationListeners.InvokeAndClearAll(this); } }