コード例 #1
0
        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;
            }
        }
コード例 #2
0
        private void WorkerDoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundFileOperation operation = (BackgroundFileOperation)e.Argument;

            foreach (var path in operation.Paths)
            {
                DoOperation(operation, path);
            }
        }
コード例 #3
0
        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 { }
                }
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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}");
            }
        }