private void DoDirectoryOperation(BackgroundFileOperation operation, string path) { if (path == operation.TargetPath) { return; } string futureName = Path.Combine(operation.TargetPath, new DirectoryInfo(path).Name); if (futureName == path) { return; } switch (operation.Operation) { case FileOperation.Copy: FileSystem.CopyDirectory(path, futureName, UIOption.AllDialogs); break; case FileOperation.Move: FileSystem.MoveDirectory(path, futureName, UIOption.AllDialogs); break; } }
private void WorkerDoWork(object sender, DoWorkEventArgs e) { BackgroundFileOperation operation = (BackgroundFileOperation)e.Argument; foreach (var path in operation.Paths) { DoOperation(operation, path); } }
private void fileOperationWorker_DoWork(object sender, DoWorkEventArgs e) { BackgroundFileOperation operation = (BackgroundFileOperation)e.Argument; foreach (string file in operation.files) { if (Shell.Exists(file)) { try { FileAttributes attr = File.GetAttributes(file); if ((attr & FileAttributes.Directory) == FileAttributes.Directory) { if (file != FullName) { string futureName = FullName + "\\" + new DirectoryInfo(file).Name; if (!(futureName == file)) { if (operation.isMove) { FileSystem.MoveDirectory(file, futureName, UIOption.AllDialogs); } else { FileSystem.CopyDirectory(file, futureName, UIOption.AllDialogs); } } } } else { string futureName = FullName + "\\" + Path.GetFileName(file); if (!(futureName == file)) { if (operation.isMove) { FileSystem.MoveFile(file, futureName, UIOption.AllDialogs); } else { FileSystem.CopyFile(file, futureName, UIOption.AllDialogs); } } } } catch { } } } }
private void DoFileOperation(BackgroundFileOperation operation, string path) { string futureName = Path.Combine(operation.TargetPath, Path.GetFileName(path)); if (futureName == path) { return; } switch (operation.Operation) { case FileOperation.Copy: FileSystem.CopyFile(path, futureName, UIOption.AllDialogs); break; case FileOperation.Move: FileSystem.MoveFile(path, futureName, UIOption.AllDialogs); break; } }
private void DoOperation(BackgroundFileOperation operation, string path) { try { if (!ShellHelper.Exists(path)) { return; } FileAttributes attr = File.GetAttributes(path); if ((attr & FileAttributes.Directory) == FileAttributes.Directory) { DoDirectoryOperation(operation, path); } else { DoFileOperation(operation, path); } } catch (Exception e) { ShellLogger.Error($"FileOperationWorker: Unable to perform {operation.Operation} on {path} into {operation.TargetPath}: {e.Message}"); } }