Sto cercando di integrare async/ awaitnel nostro bus di servizio. Ho implementato un SingleThreadSynchronizationContextbasato su questo esempio http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
E funziona bene, tranne per una cosa: TransactionScope. Aspetto roba dentro TransactionScopee rompa il file TransactionScope.
TransactionScopenon sembra giocare bene con async/ await, certamente perché memorizza le cose nel thread usando ThreadStaticAttribute. Ottengo questa eccezione:
"TransactionScope nidificato in modo errato.".
Ho provato a salvare i TransactionScopedati prima di accodare l'attività e ripristinarla prima di eseguirla, ma non sembra cambiare nulla. E il TransactionScopecodice è un casino, quindi è davvero difficile capire cosa sta succedendo lì.
C'è un modo per farlo funzionare? C'è qualche alternativa a TransactionScope?
SingleThreadSynchronizationContextper ogni livello superiore TransactionScope.