我正在尝试将async
/await
集成到我们的服务总线中。
我根据这个示例http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx实现了一个基于SingleThreadSynchronizationContext
的同步上下文。
它完全正常运行,除了一件事:TransactionScope
。我在TransactionScope
中等待任务完成,但它却破坏了TransactionScope
。
TransactionScope
似乎无法与async
/await
相兼容,可能是因为它使用ThreadStaticAttribute
将数据存储在线程中。我收到以下异常:
"TransactionScope嵌套错误。"
我尝试在排队任务之前保存TransactionScope
数据并在运行任务之前还原它,但似乎没有任何改变。而且TransactionScope
代码很混乱,所以很难理解其中的情况。
有没有办法使其正常工作?是否有替代TransactionScope
的方法?
TransactionScope
,您需要一个拥有自己的SingleThreadSynchronizationContext
的独立线程。 - Stephen Cleary