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

elakeri

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

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
что. только эта порнография с глобальными переменными, файлами флагами и тд?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 640
Баллы
113
скорее только c# с локами и т.д.
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 637
Благодарностей
1 016
Баллы
113
Есть список, с него шаб берет строки с удалением.., когда заканчивается, надо его заполнить или копированием с другого файла, или получением списка файлов с директории.., как рационально, без множества лишних движений )) сделать так, чтобы один поток заполнил, и понеслась работа дальше.., чтобы они все вместе не лезли его заполнять
Пусть заполняют.
Сделай удаление дублей и готово.
 

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 732
Благодарностей
1 401
Баллы
113
Есть список, с него шаб берет строки с удалением.., когда заканчивается, надо его заполнить или копированием с другого файла, или получением списка файлов с директории.., как рационально, без множества лишних движений )) сделать так, чтобы один поток заполнил, и понеслась работа дальше.., чтобы они все вместе не лезли его заполнять

Как то так, слепил по памяти, не судите строго: :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, либо добавить туда содержимое. Раньше в независимости пустой список или нет, выход был по зеленой...
 
Последнее редактирование:

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
Спасибо.. попробую
 

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