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