Exemplo n.º 1
0
        private void RegisterWorker(RootSet roots)
        {
            OperationWorker worker = new OperationWorker(threadsPerWorker, roots.ToString());
            worker.ProgressMade += Worker_ProgressMade;
            workers.Add(roots, worker);

            if (State == OperationState.Running)
            {
                worker.Start();
            }
        }
Exemplo n.º 2
0
        public void AddOperation(IOOperation op)
        {
            if (State == OperationState.Terminated)
                throw new InvalidOperationException("This OperationManager has been terminated.");

            string root = Path.GetPathRoot(op.FileName);
            string destinationRoot = "";
            if (op is CopyOperation)
            {
                destinationRoot = Path.GetPathRoot(((CopyOperation)op).TransferDestination);
            }
            RootSet roots = new RootSet(root, destinationRoot);

            if (!workers.ContainsKey(roots))
                RegisterWorker(roots);

            workers[roots].EnqueueOperation(op);
        }