private async Task FileCopy(string sourceItem, string target, IProgress <double> progress) { ActionData("Start copy: " + sourceItem + "..."); FileInfo fi = new FileInfo(sourceItem); await AsyncExtension.CopyFileAsync(sourceItem, Path.Combine(target, fi.Name), progress, CopyCancelTokenSrc.Token); copiedListSize += (new FileInfo(sourceItem)).Length; FileCopied(sourceItem); }
public async void Unzip() { unzippedListSize = 0; var progressHandler = new Progress <double>(value => { OnUpdateProgress(unzippedListSize + value); }); FillZipListSize(); UnzipCancelTokenSrc = new CancellationTokenSource(); DirectoryInfo diTarget = new DirectoryInfo(targetFolder); foreach (var item in diTarget.GetFiles("*.zip")) { ZipFile zf = ZipFile.Read(item.FullName); ActionData("Start to unzip: " + item.FullName); foreach (var entry in zf.Entries) { try { var progress = progressHandler as IProgress <double>; UnzipCancelTokenSrc.Token.ThrowIfCancellationRequested(); await AsyncExtension.ExtractToAsync(entry, Path.Combine(targetFolder, entry.FileName), progress, UnzipCancelTokenSrc.Token); unzippedListSize += entry.Info.Length; OnFileUnzipped(entry.FileName); } catch (OperationCanceledException ex) { ActionData(ex.Message); UnzipCancelTokenSrc.Dispose(); OperationCanceled(); return; } catch (Exception ex) { ActionData("ERROR " + ex.Message); } } ActionData("Finish to unzip: " + item.FullName); if (Autodelete) { try { zf.Dispose(); item.Delete(); ActionData(item.Name + " - deleted"); } catch (Exception ex) { ActionData(ex.Message); } } } OnUnzipFinished(targetFolder); }