<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.1" />

ObservableGauge<T>

public sealed class ObservableGauge<T> : ObservableInstrument<T> where T : struct
Represents an observable instrument that reports non-additive values when the instrument is being observed, for example, the current room temperature. Call CreateObservableGauge to create the observable counter object.
using System.Collections.Generic; using System.Runtime.CompilerServices; namespace System.Diagnostics.Metrics { public sealed class ObservableGauge<T> : ObservableInstrument<T> where T : struct { private readonly object _callback; internal ObservableGauge(Meter meter, string name, Func<T> observeValue, string unit, string description) : this(meter, name, observeValue, unit, description, (IEnumerable<KeyValuePair<string, object>>)null) { } internal ObservableGauge(Meter meter, string name, Func<T> observeValue, string unit, string description, IEnumerable<KeyValuePair<string, object>> tags) : base(meter, name, unit, description, tags) { if (observeValue == null) throw new ArgumentNullException("observeValue"); _callback = observeValue; Publish(); } internal ObservableGauge(Meter meter, string name, Func<Measurement<T>> observeValue, string unit, string description) : this(meter, name, observeValue, unit, description, (IEnumerable<KeyValuePair<string, object>>)null) { } internal ObservableGauge(Meter meter, string name, Func<Measurement<T>> observeValue, string unit, string description, IEnumerable<KeyValuePair<string, object>> tags) : base(meter, name, unit, description, tags) { if (observeValue == null) throw new ArgumentNullException("observeValue"); _callback = observeValue; Publish(); } internal ObservableGauge(Meter meter, string name, Func<IEnumerable<Measurement<T>>> observeValues, string unit, string description) : this(meter, name, observeValues, unit, description, (IEnumerable<KeyValuePair<string, object>>)null) { } internal ObservableGauge(Meter meter, string name, Func<IEnumerable<Measurement<T>>> observeValues, string unit, string description, IEnumerable<KeyValuePair<string, object>> tags) : base(meter, name, unit, description, tags) { if (observeValues == null) throw new ArgumentNullException("observeValues"); _callback = observeValues; Publish(); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 0 })] protected override IEnumerable<Measurement<T>> Observe() { return ObservableInstrument<T>.Observe(_callback); } } }