Работа с входными настройками в многопотоке. Правильный путь?

romasa464

Client
Регистрация
18.06.2017
Сообщения
70
Благодарностей
12
Баллы
8
Всем привет. Предположим, во входных настройках у меня есть многострочное поле ввода, в которое я ввожу данные от аккаунтов, вида:

C#:
login:password
login:password
login:password
login:password
Далее, я разбиваю этот код по разделителю в массив и записываю в список проекта:

C#:
// Получаю список аккаунтов из настроек
string accounts = project.Variables["accounts"].Value;

// Разбиваю строку по переносу строки в массив
string[] separator = {Environment.NewLine };
string[] accountsArray = accounts.Split(separator, StringSplitOptions.RemoveEmptyEntries);

// Добавляю массив настроек в список проекта
foreach (string account in accountsArray)
{
    project.Lists["accounts"].Add(account);
}
Соответственно, вопрос: Как сделать эту конструкцию потокобезопасной? Предположим, имея список в проекте я могу его залочить через объект синхронизации. Но что делать с изложенным выше кодом? Насколько я понимаю, при запуске каждого нового потока этот код будет отрабатывать заново и каждый раз дописывать в список проекта данные аккаунта повторно. ПРи работе с файлом, этого можно было избежать тем, что из файла при каждом подключении удалялась последняя строка.

То есть, в данном случае, каждый новый поток, будет повторно брать строку с аккаунтами, из входных настроек, разбивать их на массив строк и загружать в список проекта. А нужно, чтобы это происходило только один раз. Посоветуйте, как сделать это максимально изящно?

P.S. Да, я понимаю, что можно просто после первой загрузки в список проекта очистить переменную с аккаунтами, и поставить проверку на пустоту. Тем самым ограничив загрузку в list первым запуском, но мне кажется что решение костыльное.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
почему бы не использовать файл для таких целей ? какая такая важная причина вставлять список аккаунтов именно в поле входных настроек ?
 
  • Спасибо
Реакции: romasa464

andrey-ka

Client
Регистрация
03.06.2018
Сообщения
855
Благодарностей
246
Баллы
43
Ага, файл или глобальные переменные.
 
  • Спасибо
Реакции: romasa464

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