Próbuję zintegrować async/ awaitz naszą magistralą usług. Zaimplementowałem na SingleThreadSynchronizationContextpodstawie 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 TransactionScopei to zepsuje TransactionScope.
TransactionScopenie 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ć TransactionScopedane przed umieszczeniem zadania w kolejce i przywrócić je przed uruchomieniem, ale wydaje się, że nic to nie zmienia. A TransactionScopekod 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?
SingleThreadSynchronizationContextdla każdego najwyższego poziomu TransactionScope.