Всем привет. Предположим, во входных настройках у меня есть многострочное поле ввода, в которое я ввожу данные от аккаунтов, вида:
Далее, я разбиваю этот код по разделителю в массив и записываю в список проекта:
Соответственно, вопрос: Как сделать эту конструкцию потокобезопасной? Предположим, имея список в проекте я могу его залочить через объект синхронизации. Но что делать с изложенным выше кодом? Насколько я понимаю, при запуске каждого нового потока этот код будет отрабатывать заново и каждый раз дописывать в список проекта данные аккаунта повторно. ПРи работе с файлом, этого можно было избежать тем, что из файла при каждом подключении удалялась последняя строка.
То есть, в данном случае, каждый новый поток, будет повторно брать строку с аккаунтами, из входных настроек, разбивать их на массив строк и загружать в список проекта. А нужно, чтобы это происходило только один раз. Посоветуйте, как сделать это максимально изящно?
P.S. Да, я понимаю, что можно просто после первой загрузки в список проекта очистить переменную с аккаунтами, и поставить проверку на пустоту. Тем самым ограничив загрузку в list первым запуском, но мне кажется что решение костыльное.
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 первым запуском, но мне кажется что решение костыльное.