Что я пытаюсь выполнить, так это у меня есть блок действий с MaxDegreeOfParallelism = 4
. Я хочу создать один локальный экземпляр объекта сеанса, который у меня есть для каждого параллельного пути. Поэтому я хочу суммировать 4 объекта сеанса. Если бы это было тема, я хотел бы создать что-то вроде:TPL локальное хранилище данных или что-то в этом роде
ThreadLocal<Session> sessionPerThread = new ThreadLocal<Session>(() => new Session());
Я знаю, что блоки не являются нитями, так я ищу что-то подобное, но для блоков. Любой способ создать это?
Этот блок находится в обслуживании и работает в течение нескольких месяцев подряд. В течение этого периода времени для каждого параллельного слота блока используется множество потоков, поэтому локальное хранилище потоков не подходит. Мне нужно что-то связанное с слотом логического блока. Также этот блок никогда не завершается, он запускает всю жизнь службы.
Примечание: приведенный выше ответ недействителен для того, что я прошу. Я специально прошу что-то другое, чем thread local, и выше ответ использует thread local. Это совсем другой вопрос.
Возможный дубликат [TPL Data Flow Thread Local Data] (http://stackoverflow.com/questions/14693452/tpl-data-flow-thread-local-data) – svick
Нет, это не дубликат потока данных TPL Локальные данные по потоку. Они спрашивают, как использовать «Локальные данные потока», это явно то, что я не хочу использовать. Я хочу что-то, что привязано к параллельным слотам блока, а не к нитям. Любой данный слот в блоке может пересекать много потоков за время жизни блока, это не то, что я хочу. –
За исключением того, что блоки потока данных не имеют понятия «слоты». Существует максимальная степень параллелизма, но это не одно и то же, нет слота, который будет перемещаться между потоками. Не могли бы вы объяснить, почему именно вы хотите это сделать? – svick