Я намагаюся інтегрувати 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
.