Зависает lock(SyncObjects.ListSyncer) в многопотоке

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
Всем привет, возникла проблема с выполнением лока списка в многопотоке:
периодически на случайном потоке происходит зависание этого кода и вслед за ним встают все остальные потоки.
Наблюдалось и на 7.3 и на 7.4 (по-моему даже на 5-ке )

C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["text"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["list"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer) {
    for(int i=0; i < sourceList.Count; i++) {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains)) {
            return sourceList.IndexOf(str);
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 717
Баллы
113
Список большой ?
зачем в этом коде лок ? читать из файла можно безопасно в сколь угодно потоков. убери лок, другим не будет мешать зависнуть :ca: толпой же веселее висеть. :ay:

ну а вообще чот зенка расстраивает. у меня примерно такой же код в одном шаблоне, просто берет строку с удалением. и периодически шаблон задумывается. ну сколько там можно потратить времени на взятие строки ? а у меня до 3-х минут доходит. Вот думаю тут 2 варианта. либо зенка мозги компостирует, либо это я бездумно использую один и тот же объект лока во всех шаблонах, под копирку.... :bw:
 

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
Список динамический, в каждом потоке своё содержимое, может сотня записей максимум. Можно конечно писать во временный текстовый файл, потом в нём искать, но зачем так заморачиваться.
Проще наверно будет во временную таблицу sql писать и средствами mysql сервера решать вопрос поиска и т.д.
 

fayruzi4

Client
Регистрация
01.02.2016
Сообщения
164
Благодарностей
29
Баллы
28
и периодически шаблон задумывается. ну сколько там можно потратить времени на взятие строки ? а у меня до 3-х минут доходит.
у меня мой код зависает минут на 30, потом отвисает и как ни в чём не бывало, продолжает выполняться проект...
 

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