【发布时间】:2010-12-20 08:56:26
【问题描述】:
有没有办法做到这一点(伪代码):
GetCurrentThread().Items.Add(new RefObject);
稍后再检索它
RefObject[] refObjs = GetCurrentThread().Items;
并枚举对象。显然,在它的生命周期内,这两个调用都会发生在同一个线程上。
基本思想是我可以轻松识别当前线程的项目,并且它们实际上是在此线程中创建的。这与对 ASP.NET 请求使用 Page.Request 对象相同 - 您知道它在工作进程中非常独特,因此它不会与同时服务的其他请求混淆。我想处理像Page.Request 这样的线程 - 它来了又走,但是当它还活着时,我可以随意查询它,而无需关心过程中存在的其他威胁。
曾经我做过类似的事情,但它更像是通过引用编组对象的模拟。而且我可以想出更多的方法来做到这一点,但我真的不想自己手动存储线程和对象之间的映射。 .NET 中的线程没有类似于 TransactionScope 的东西吗?我对处理同步的困难和避免竞争条件不太感兴趣。
PS:如果这不可用,我至少可以为没有静态变量的application domain 这样做吗?
【问题讨论】:
标签: .net multithreading scope transactionscope named-scope