private async void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (SelectFile()) { if (addFileConrtol.FileNames.Length > 0) { int index = 0; if (addFileConrtol.FilterIndex > 1) { index = addFileConrtol.FilterIndex - 2; } List <Task> tasks = new List <Task>(addFileConrtol.FileNames.Length); foreach (string path in addFileConrtol.FileNames) { IWillTranslateFile file = FileTypes[index].Create(path); if (file == null) { continue; } Files.Add(new TranslatingFile(file)); OnUpdateData(); tasks.Add(Files.Last().StatisticsAsync()); } if (tasks.Count > 0) { await Task.Factory.ContinueWhenAny(tasks.ToArray(), task => OnUpdateData()); await Task.WhenAll(tasks); OnUpdateData(true); } } } }
public TranslatingFile(IWillTranslateFile file) { File = file; if (file.IsFile) { FullPath = Path.GetFullPath(file.FullPath); } else { FullPath = file.FullPath; } Name = Path.GetFileName(FullPath); DirectoryPath = Path.GetDirectoryName(FullPath); }