Próbuję zintegrować async
/ await
z naszą magistralą usług. Zaimplementowałem na SingleThreadSynchronizationContext
podstawie tego przykładu http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
I to działa dobrze, z wyjątkiem jednej rzeczy: TransactionScope
. Czekam na rzeczy w środku TransactionScope
i to zepsuje TransactionScope
.
TransactionScope
nie wydaje się działać dobrze z async
/ await
, z pewnością dlatego, że przechowuje rzeczy w wątku przy użyciu ThreadStaticAttribute
. Mam ten wyjątek:
„TransactionScope zagnieżdżony nieprawidłowo.”.
Próbowałem zapisać TransactionScope
dane przed umieszczeniem zadania w kolejce i przywrócić je przed uruchomieniem, ale wydaje się, że nic to nie zmienia. A TransactionScope
kod to bałagan, więc naprawdę trudno jest zrozumieć, co się tam dzieje.
Czy jest sposób, aby to zadziałało? Czy jest jakaś alternatywa TransactionScope
?
SingleThreadSynchronizationContext
dla każdego najwyższego poziomu TransactionScope
.