Я пытаюсь интегрировать async/ awaitв нашу служебную шину. Я реализовал на SingleThreadSynchronizationContextоснове этого примера http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
И это работает отлично, за исключением одной вещи: TransactionScope. Я жду хрень TransactionScopeи ломаюсь TransactionScope.
TransactionScopeпохоже, не очень хорошо работает с async/ await, конечно, потому что он хранит вещи в потоке, используя ThreadStaticAttribute. Я получаю это исключение:
«TransactionScope неправильно вложен.».
Я пытался сохранить TransactionScopeданные перед постановкой задачи в очередь и восстановить их перед запуском, но, похоже, это ничего не меняет. А TransactionScopeкод - это беспорядок, поэтому очень сложно понять, что там происходит.
Есть ли способ заставить его работать? Есть ли альтернатива TransactionScope?
SingleThreadSynchronizationContextдля каждого верхнего уровня TransactionScope.