Грамотная работа с локом

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Есть 10 шаблонов, в каждом из которых находятся свои данные (различные уникальные преднастройки). В конце каждого подключается один и тот же вложенный проект XYZ.xmlz.

Каждый такой шаблон запускается в 5 потоков.
На выходе получаем 50 потоков.

Косяк состоит в том, что во вложенном проекте есть определенный участок кода, который должен быть залочен, НО блокировать должен только потоки родителя (потоки основного шаблона из которого был запущен подпроект), а в итоге блокируются АБСОЛЮТНО ВСЕ ПОТОКИ, всех 10 шаблонов, а не одного.

Использую lock(SyncObject) - и я прекрасно осознаю, что работает он правильно, как и полагается.
Вопрос в том, как мне правильно всё это дело залочить в подпроекте в рамках 1-ого основного шаблона, а не всех 10 в которых подключен данный подпроект?

P.S. Сейчас думаю в сторону лока динамического объекта, который будет определяться основным шаблоном, но пока не понимаю, как это можно реализовать.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Сначала подумал, чтобы отправлять ссылку на созданный в главном шаблоне объекта блокировки. Вот только проблематично её передать, так как по сути передаются только типы стринг. Можно попробовать использовать project.Context и таким образом передавать ссылку (аналог Thread.SetData()), но нет гарантии, что сработает, так как вполне возможно, что запускаемый проект в проекте - это новый поток (это можно проверить по ID потока).
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
создай во вложеном отдельный спикок в общем коде и пусть он с ним работает
 

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