Estou tentando integrar async/ awaitem nosso barramento de serviço. Implementei um com SingleThreadSynchronizationContextbase 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 TransactionScopee quebre o TransactionScope.
TransactionScopenã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 TransactionScopedados antes de enfileirar a tarefa e restaurá-la antes de executá-la, mas parece que nada mudou. E o TransactionScopecó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?
SingleThreadSynchronizationContextpara cada nível superior TransactionScope.