У меня неотложная проблема, и я надеюсь, что вы все сможете мне помочь. Я постараюсь объяснить это как можно лучше.
Я расширяю систему, которая использует удаленное взаимодействие .NET, чтобы разрешить вызовы базы данных от тонкого клиента к серверу, который выполняет указанные вызовы. На самом сервере установлены компоненты доступа к данным, поэтому он выполняет фактические вызовы базы данных и просто возвращает потоки данных тонкому клиенту.
Я недавно добавил в эти модули транзакции. Я хотел сделать этот потокобезопасным, если бы клиентский поток A запустил транзакцию базы данных, клиентский поток B не смог бы получить доступ к транзакции клиентского потока A. Тем временем нет необходимости разрешать клиентскому потоку B иметь свою собственную транзакцию, необходимо только, чтобы я не позволял клиентскому потоку B использовать транзакцию клиентского потока A.
Есть только одна ссылка на объект удаленного взаимодействия, который они оба используют, и из-за базовой архитектуры, в которую я не буду входить, я не могу это изменить. Все объекты транзакции хранятся на сервере в этом объекте удаленного взаимодействия.
Я не вижу хорошего способа сделать это, кроме, возможно, передачи информации о клиентском потоке вместе с каждым отдельным вызовом транзакции, что невозможно с моими жесткими временными шкалами. :-( Возможно, если бы объект удаленного взаимодействия мог получить доступ к вызывающему клиентскому потоку, мне бы не пришлось передавать информацию о потоке при каждом вызове, что сделало бы это возможным.
Если бы существовал способ связать клиентский поток с потоком удаленного процесса, я думаю, это помогло бы, но нет документации, которую я мог бы найти по этому поводу.
Надеюсь, я достаточно хорошо это объяснил. Любая помощь приветствуется. Заранее спасибо.