Я пытаюсь интегрировать 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
.