예제 #1
0
파일: TaskFileZip.cs 프로젝트: asipe/area51
    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;
      }
    }
예제 #2
0
파일: TaskFileZip.cs 프로젝트: asipe/area51
 public void Execute(Item[] items, int runnerCount) {
   AsyncExecute(items, runnerCount).Wait();
 }
예제 #3
0
파일: TaskFileZip.cs 프로젝트: asipe/area51
 private static Task<Item> CompressUsingZipFile(Item item) {
   return Task.Factory.StartNew(() => {
     ZipFile.CreateFromDirectory(item.Source, item.Dest, CompressionLevel.Fastest, false);
     return item;
   });
 }