<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="6.0.0-preview.5.21301.5" />

SynchronizedList<T>

sealed class SynchronizedList<T>
using System.Collections.Generic; namespace System.Diagnostics { internal sealed class SynchronizedList<T> { private readonly List<T> _list; private uint _version; public int Count => _list.Count; public SynchronizedList() { _list = new List<T>(); } public void Add(T item) { lock (_list) { _list.Add(item); _version++; } } public bool AddIfNotExist(T item) { lock (_list) { if (_list.Contains(item)) return false; _list.Add(item); _version++; return true; } } public bool Remove(T item) { lock (_list) { if (!_list.Remove(item)) return false; _version++; return true; } } public void EnumWithFunc<TParent>(ActivitySource.Function<T, TParent> func, ref ActivityCreationOptions<TParent> data, ref ActivitySamplingResult samplingResult, ref ActivityCreationOptions<ActivityContext> dataWithContext) { uint version = this._version; int num = 0; while (num < this._list.Count) { T item = default(T); lock (this._list) { if (version == this._version) { item = this._list[num]; num++; goto IL_004f; } version = this._version; num = 0; } continue; IL_004f: func(item, ref data, ref samplingResult, ref dataWithContext); } } public void EnumWithAction(Action<T, object> action, object arg) { uint version = _version; int num = 0; while (num < _list.Count) { T arg2 = default(T); lock (_list) { if (version == _version) { arg2 = _list[num]; num++; goto IL_004f; } version = _version; num = 0; } continue; IL_004f: action(arg2, arg); } } } }