J'essaye d'intégrer async
/ await
dans notre bus de service. J'ai implémenté un SingleThreadSynchronizationContext
basé sur cet exemple http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
Et cela fonctionne très bien, sauf pour une chose: TransactionScope
. J'attends des trucs à l'intérieur TransactionScope
et ça casse le TransactionScope
.
TransactionScope
ne semble pas jouer bien avec le async
/ await
, certainement parce qu'il stocke des choses dans le thread en utilisant ThreadStaticAttribute
. J'obtiens cette exception:
"TransactionScope imbriqué incorrectement.".
J'ai essayé de sauvegarder les TransactionScope
données avant de mettre la tâche en file d'attente et de la restaurer avant de l'exécuter, mais cela ne semble rien changer. Et le TransactionScope
code est un gâchis, il est donc vraiment difficile de comprendre ce qui se passe là-bas.
Y a-t-il un moyen de le faire fonctionner? Y a-t-il une alternative à TransactionScope
?
SingleThreadSynchronizationContext
pour chaque niveau supérieur TransactionScope
.