public void fillPull(List <Restriction> values)
 {
     workDirectories = new Dictionary <string, string>();
     foreach (var s in values)
     {
         pullValue.Enqueue(s.ReplicaId);
         if (s.WorkDirectory != string.Empty)
         {
             workDirectories.Add(s.ReplicaId, s.WorkDirectory);
             if (!Directory.Exists(s.WorkDirectory))
             {
                 Directory.CreateDirectory(s.WorkDirectory);
             }
             else
             {
                 var flushCommand = new FlushFolder();
                 flushCommand.FolderPath = s.WorkDirectory;
                 flushCommand.RegionId   = this.RegionID;
                 preProcess += flushCommand.processAction;
             }
         }
     }
     lastElementCount = pullValue.Count;
 }
        public void operatePull()
        {
            if (CommandText == String.Empty)
            {
                throw new Exception("Не заполнен шаблон текста команды.Операция будет прервана");
            }
            if (ConnectionString == String.Empty)
            {
                throw new Exception("Не заполнена строка соединения.Операция будет прервана");
            }
            if (pullValue.Count == 0)
            {
                throw new Exception("Пулл значений пуст.Операция будет прервана");
            }
            //ThreadPool.SetMaxThreads(WindowSize, WindowSize);
            if (workDirectories == null)
            {
                workDirectories = new Dictionary <string, string>();
            }
            foreach (var s in pullValue)
            {
                if (workDirectories.ContainsKey(s))
                {
                    continue;
                }
                var command = new SqlCommand(this.ExtractPathSQL, new SqlConnection(this.ConnectionString));
                command.Parameters.Add(new SqlParameter("Replica", s));
                if (command.Connection.State == System.Data.ConnectionState.Closed)
                {
                    command.Connection.Open();
                }
                using (var dataReader = command.ExecuteReader())
                {
                    dataReader.Read();
                    switch (direction)
                    {
                    case DirectionsEnum.Import:
                    {
                        workDirectories.Add(s, dataReader.GetString(0));
                        break;
                    }

                    case DirectionsEnum.Export:
                    {
                        workDirectories.Add(s, dataReader.GetString(1));
                        break;
                    }

                    default:
                        break;
                    }
                    var flushImportCommand = new FlushFolder();
                    flushImportCommand.FolderPath = dataReader.GetString(0);
                    flushImportCommand.RegionId   = this.RegionID;
                    this.preProcess += flushImportCommand.processAction;
                    var flushExportCommand = new FlushFolder();
                    flushExportCommand.FolderPath = dataReader.GetString(1);
                    flushExportCommand.RegionId   = this.RegionID;
                    this.preProcess += flushExportCommand.processAction;
                }
                if (command.Connection.State == System.Data.ConnectionState.Open)
                {
                    command.Connection.Close();
                }
            }
            try
            {
                preProcess();
            }
            catch
            {
            }

            Status = RunningStatusEnum.Running;
            this.RunProcess();
        }