public async Task <ReturnResult> CopyItemsAsync(IEnumerable <PathWithType> source, IEnumerable <string> destination, bool registerHistory) { PostedStatusBanner banner = associatedInstance.BottomStatusStripControl.OngoingTasksControl.PostBanner( string.Empty, associatedInstance.FilesystemViewModel.WorkingDirectory, 0, ReturnResult.InProgress, FileOperationType.Copy); ReturnResult returnStatus = ReturnResult.InProgress; banner.ErrorCode.ProgressChanged += (s, e) => returnStatus = e.ToStatus(); Stopwatch sw = new Stopwatch(); sw.Start(); IStorageHistory history; List <IStorageHistory> rawStorageHistory = new List <IStorageHistory>(); associatedInstance.ContentPage.ClearSelection(); for (int i = 0; i < source.Count(); i++) { rawStorageHistory.Add(await filesystemOperations.CopyAsync( source.ElementAt(i), destination.ElementAt(i), banner.Progress, banner.ErrorCode, cancellationToken)); } if (rawStorageHistory.TrueForAll((item) => item != null)) { history = new StorageHistory( rawStorageHistory[0].OperationType, rawStorageHistory.SelectMany((item) => item.Source).ToList(), rawStorageHistory.SelectMany((item) => item.Destination).ToList()); if (registerHistory && source.Any((item) => !string.IsNullOrWhiteSpace(item.Path))) { App.HistoryWrapper.AddHistory(history); } } banner.Remove(); sw.Stop(); if (sw.Elapsed.TotalSeconds >= 10) { associatedInstance.BottomStatusStripControl.OngoingTasksControl.PostBanner( "Copy Complete", "The operation has completed.", 0, ReturnResult.Success, FileOperationType.Copy); } return(returnStatus); }