Beispiel #1
0
    public async Task AsyncExecute(Item[] items, int runnerCount) {
      var queue = new Queue<Item>(items);
      var tasks = new List<Task<Item>>();

      while (tasks.Any() || queue.Any()) {
        while (tasks.Count() != runnerCount && queue.Any())
          tasks.Add(CompressUsingZipFile(queue.Dequeue()));
        var task = await Task.WhenAny(tasks);
        tasks.Remove(task);
        await task;
      }
    }
Beispiel #2
0
 public void Execute(Item[] items, int runnerCount) {
   AsyncExecute(items, runnerCount).Wait();
 }
Beispiel #3
0
 private static Task<Item> CompressUsingZipFile(Item item) {
   return Task.Factory.StartNew(() => {
     ZipFile.CreateFromDirectory(item.Source, item.Dest, CompressionLevel.Fastest, false);
     return item;
   });
 }