Estou tentando integrar async
/ await
em nosso barramento de serviço. Implementei um com SingleThreadSynchronizationContext
base neste exemplo http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
E ele funciona muito bem, exceto por uma coisa: TransactionScope
. Aguardo coisas dentro do TransactionScope
e quebre o TransactionScope
.
TransactionScope
não parece funcionar bem com o async
/ await
, certamente porque ele armazena coisas no thread usando ThreadStaticAttribute
. Eu recebo esta exceção:
"TransactionScope aninhado incorretamente.".
Tentei salvar os TransactionScope
dados antes de enfileirar a tarefa e restaurá-la antes de executá-la, mas parece que nada mudou. E o TransactionScope
código é uma bagunça, então é muito difícil entender o que está acontecendo lá.
Existe uma maneira de fazer funcionar? Existe alguma alternativa para TransactionScope
?
SingleThreadSynchronizationContext
para cada nível superior TransactionScope
.