using System.Collections.Generic; namespace DTLib.Reactive { public abstract class ReactiveWorker { protected List> Streams = new(); protected SafeMutex ReactiveWorkerMutex = new(); public ReactiveWorker() { } public ReactiveWorker(ReactiveStream stream) => Join(stream); public ReactiveWorker(IEnumerable> streams) => ReactiveWorkerMutex.Execute(() => { foreach (var stream in streams) Join(stream); }); public abstract void Join(ReactiveStream stream); public abstract void Leave(ReactiveStream stream); } }