Ign*_*cia 5 .net c# multithreading task-parallel-library
我有一个像这样的foreach方法:
public void Initialize(ClassB fixed)
{
foreach (ClassA item in itemCollection)
{
this.InitializeStock(fixed, item);
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用Parallel.ForEach与这个但不确定如何做到这一点.我不能将fixed参数设置为类属性,因为已经从另一个Parallel.ForEach调用了Initialize方法.
提前致谢.
Jon*_*eet 11
目前尚不清楚问题是什么.这应该没问题:
public void Initialize(ClassB fixed)
{
Parallel.ForEach(itemCollection, item =>
{
this.InitializeStock(fixed, item);
});
}
Run Code Online (Sandbox Code Playgroud)
该fixed变量将被λ表达式被捕获,以便它可以在调用时使用InitializeStock.
编辑:如果你真的不想要lambda表达式:
private class ClassBHolder
{
private readonly ClassB fixed;
// Foo is the class which has the Initialize method
private readonly Foo container;
internal ClassBHolder(ClassB fixed, Foo container)
{
this.fixed = fixed;
this.container = container;
}
internal void Execute(ClassA item)
{
container.InitializeStock(fixed, item);
}
}
public void Initialize(ClassB fixed)
{
ClassBHolder holder = new ClassBHolder(fixed, this);
Parallel.ForEach(itemCollection, holder.Execute);
}
Run Code Online (Sandbox Code Playgroud)
......但是真的,你宁愿读什么?
| 归档时间: |
|
| 查看次数: |
4443 次 |
| 最近记录: |