public async Task RunVisitor(IDynamicElemVisitor visitor)
        {
            var queue    = new BlockingCollection <IScheduleElem>(new ConcurrentQueue <IScheduleElem>());
            var consumer = Task.Run(() =>
            {
                foreach (var scheduleElem in queue.GetConsumingEnumerable())
                {
                    visitor.VisitElem(scheduleElem);
                }
            });

            foreach (var day in storage.Values.SelectMany(week => week))
            {
                queue.Add(day);
            }

            queue.CompleteAdding();
            await consumer;
        }
Beispiel #2
0
 public Task RunVisitorThrougthStorage(IDynamicElemVisitor visitor)
 {
     return(storage.RunVisitor(visitor));
 }