TransactionScope和multithreading

我想知道在处理multithreading时如何以正确的方式使用TransactionScope类?

我们在主线程中创build一个新的范围,然后产生一对工作线程,我们希望这些线程参与主范围,例如,如果范围从未完成,那么每个工作者都会调用回滚。

我使用内部的ThreadStaticAttribute读取了一些有关TransactionScope的内容,这使得上述不可能/非常困难 – 有人可以validation任何一种方式吗? 如果我们以同步方式运行代码,则回滚工作,即内部事务能够参与主事务,但是如果我们切换到线程执行,则不能。

谢谢

请参阅MSDN :

对于需要跨多个函数调用或多个线程调用使用相同事务的应用程序,还应该使用TransactionScope和DependentTransaction类。

所以也许看看DependentTransaction – 特别是在这里有一个工作线程的例子。

这是正确的: TransactionScope类使用Transaction.Current属性,它的值存储在用ThreadStatic属性标记的字段中。

ThreadStatic属性确保字段值获得线程关联,即它在每个线程中都有唯一的值。 这是在线程中分享date的推荐方法。 它也被称为线程本地存储 (TLS)。

TransactionScope类只是在当前线程中定义一个事务上下文。 但是,这并不意味着你的代码必须完成该线程中的所有工作。 我可以想象一个复杂的计算algorithm,使用多个线程。