【发布时间】:2010-01-22 23:48:15
【问题描述】:
我有一个紧迫的问题,希望大家能帮助我。我会尽量解释清楚。
我正在扩充一个使用 .NET 远程处理的系统,以允许从瘦客户端到执行所述调用的服务器的数据库调用。服务器本身安装了数据访问组件,因此它对数据库进行实际调用,并将数据行返回给瘦客户端。
我最近刚刚在这些模块中添加了事务。我想让这个线程安全,如果客户端线程 A 启动数据库事务,客户端线程 B 将无法访问客户端线程 A 的事务。同时不需要让客户端线程B拥有自己的事务,只需要我不允许客户端线程B使用客户端线程A的事务。
只有 1 个对它们共享的远程处理对象的引用,并且由于我不会进入的底层架构,我无法更改它。所有的 Transaction 对象都存储在服务器上的这个远程对象中。
我看不出这样做的好方法,除了可能将客户端线程信息与每个事务调用一起传递,这在我紧迫的时间表中是不可行的。 :-( 如果远程处理对象可以访问调用客户端线程,那么我就不必在每次调用时都传递线程信息,这使得这可行。
如果有某种方法可以将客户端线程与远程处理线程相关联,我认为这可以解决问题,但我找不到关于此类事情的文档。
我希望我解释得足够好。非常感谢所有帮助。提前谢谢你。
【问题讨论】:
标签: .net multithreading remoting thread-safety