Beispiel #1
0
        public async Task AddSomeTaskFunc_RunIt_AllDone()
        {
            var tasks = Enumerable.Range(0, 10)
                        .Select(x => TaskGen(() => { }))
                        .ToArray();
            var res = await TaskQuene.RunVoidAsync(tasks);

            Assert.AreEqual(res.Length, tasks.Length);
            foreach (var item in res)
            {
                Assert.IsTrue(item.IsCompleted);
            }
        }
        public static Task BatchEmitAsync(this IComicDownloader downloader,
                                          ComicDownloadRequest request,
                                          int concurrent          = 5,
                                          CancellationToken token = default)
        {
            if (downloader is null)
            {
                throw new ArgumentNullException(nameof(downloader));
            }

            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (concurrent <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(concurrent));
            }

            var tasks = downloader.EmitTasks(request, token);

            return(TaskQuene.RunVoidAsync(tasks, concurrent));
        }