2017-04-05 87 views
0

我有函数返回字符串,它有ControllerContext的参数,这是抛出错误ControllerContext在MVC C#抛出错误Parallel.ForEach

这里是代码

 var cContext = ControllerContext; 

     Parallel.ForEach(listInvHeaderIDs, x =>   
     { 

     body = new myClass().myFunctionReturnString(cContext); 

     } 

我们可以使用ControllerContext在Parallel.Foreach如果不是使用什么

+1

什么是错误? – Luke

+0

'ControllerContext'甚至线程安全吗? – DavidG

+0

错误 - 对象引用未设置为对象的实例 – satyender

回答

-1

你也许可以试试这个超载的Parallel.ForEach

public static ParallelLoopResult ForEach<TSource, TLocal>(IEnumerable<TSource> source, 
     Func<TLocal> localInit, Func<TSource, ParallelLoopState, TLocal, TLocal> body, 
     Action<TLocal> localFinally) 

执行具有上IEnumerable线程局部数据,其中迭代可以并行地运行一个foreach操作,并且在循环的状态下可被监测和操纵。

用法的例子:

UDPATE 我已经更新的例子,现在应该没问题。

Parallel.ForEach(listInvHeaderIDs,() => {return cContext; }, 
(listId, loopInfo, ctrlContext) =>    
{ 
    body = new myClass().myFunctionReturnString(ctrlContext); 
    return ctrlContext; 
}, 
(ctrlContext) => { /*access controller context if needed...*/}); 
+0

没有看到OP看到什么错误,这个答案是纯粹的猜测。 – DavidG

+0

其给出错误委托'动作'不接受0参数 – satyender