Castle Windsor瞬态对象和.NEt 4.0的Parallel.For<>()

时间:2012-11-15 00:01:47

标签: .net castle-windsor task-parallel-library castle

我有一个使用ANTLR实现的复杂的抽象语法树解析器/生成器,我将每个节点的状态保持为瞬态windsor对象。所以在解析器启动之前,我会执行container.Install(FromXml),其中每个状态的一个大XML将在树解析器中使用。

问题是我按顺序在树上至少30个级别用非常繁重的内务状态对象来获取2000行的表格数据,每行200个字段,以便减少时间,我试图利用.NET的parellel循环为:

// for each row 
Parellel.For(0, N (i) => 
{ 
   // for each column 
   Parellel.For(0, N, (i) => 
   { 
      // use (i) in constructing a XML node tree using windsor container invoked states for       
      each node. 
   } 
});

但是我转向了Parellel。对于传统的for循环,我开始在状态中出错,我的跟踪计数器,回溯词典都在冲突说已经调用了状态,什么不是。

我的容器本身被包裹在一个单身中,这有关系吗?这些对象是在瞬态创建的,因此每次调用container.resolve()都不会给我创建新对象。将两个线程在resolve()和release()调用之间工作,因为每个都应该有自己的状态对象??

0 个答案:

没有答案