using System.Collections.Generic; namespace DTLib.Reactive { public class ReactiveStream { public ReactiveStream() { } List _storage = new(); List Storage { get { lock (Storage) return _storage; } } public int Length { get { lock (Storage) return Storage.Count; } } public T this[int index] { get { lock (Storage) return Storage[index]; } } internal event EventHandlerAsync ElementAddedEvent; internal void Add(T elem) { lock (Storage) Storage.Add(elem); ElementAddedEvent?.Invoke(elem); } internal void Clear() { lock (Storage) Storage.Clear(); } } }