заполнение списка в многопотоке

  • Автор темы Автор темы elakeri
  • Дата начала Дата начала

elakeri

Client
Регистрация
23.07.2018
Сообщения
203
Реакции
10
Баллы
18
Есть список, с него шаб берет строки с удалением.., когда заканчивается, надо его заполнить или копированием с другого файла, или получением списка файлов с директории.., как рационально, без множества лишних движений )) сделать так, чтобы один поток заполнил, и понеслась работа дальше.., чтобы они все вместе не лезли его заполнять
 
что. только эта порнография с глобальными переменными, файлами флагами и тд?
 
Есть список, с него шаб берет строки с удалением.., когда заканчивается, надо его заполнить или копированием с другого файла, или получением списка файлов с директории.., как рационально, без множества лишних движений )) сделать так, чтобы один поток заполнил, и понеслась работа дальше.., чтобы они все вместе не лезли его заполнять
Пусть заполняют.
Сделай удаление дублей и готово.
 
Есть список, с него шаб берет строки с удалением.., когда заканчивается, надо его заполнить или копированием с другого файла, или получением списка файлов с директории.., как рационально, без множества лишних движений )) сделать так, чтобы один поток заполнил, и понеслась работа дальше.., чтобы они все вместе не лезли его заполнять


Как то так, слепил по памяти, не судите строго: :am:

C#:
Развернуть Свернуть Копировать
var list = project.Lists["Главный список"]; // Первый список
var list_2 = project.Lists["Список донор"];  // Второй список
lock(SyncObjects.ListSyncer) // Лочим поток
{
begin:
   if(list.Count > 0) // Проверяем количество строк в первом списке, если больше нуля то берем строку
   {
     string line = list[0]; // Берем строку с первого списка
     project.Variables["str"].Value = line; // записываем в переменную str
     list.RemoveAt(0); // Удаляем строку
     return "ok"; // Выходим с кода по зеленой
   }
      if(list_2.Count > 0) // Проверяем количество строк во втором списке, если список не пустой, то работаем со вторым списком
      {
          string temp = string.Join("\r\n", list_2.ToList()); // если в первом списке строк не осталось, объединяем все строки с второго списка
         foreach(string x in temp.Split('\n')) // В цикле добавляем в первый список
         {
           list.Add(x);
         }
       System.Threading.Thread.Sleep(7 * 1000); // Ждем 7 сек, чтоб строки добавились в первый список
       goto begin;
     }
 throw new Exception("Добавьте строки в список 2, так как он пустой!"); // если второй список пустой то вызываем ошибку, и выходим по красной
}


P.S Проверил код отрабатывает успешно, добавил проверку на наличие строк в списке 2, если он пустой, то выход по красной. Мало ли вдруг забудете указать список 2, либо добавить туда содержимое. Раньше в независимости пустой список или нет, выход был по зеленой...
 
Последнее редактирование:
Спасибо.. попробую
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)