public async Task <Task> RegisterStreamAsync(StreamInfo <T> streamInfo, List <T> initData = null) { var data = StreamData <T> .Create(streamInfo, initData); _lock.EnterWriteLock(); try { _streamList.Add(data); } finally { _lock.ExitWriteLock(); } if (initData == null) { return(data.CompletionTask.Task); } var tasks = initData.Select(value => WriteStreamAsync(data, value)).ToList(); await Task.WhenAll(tasks); return(data.CompletionTask.Task); }
public Task RegisterStream(StreamInfo <T> streamInfo, T initData = null) { var data = StreamData <T> .Create(streamInfo, initData); _streamList.Add(data); if (initData != null) { data.Stream.WriteAsync(initData); } return(data.CompletionTask.Task); }