gpt4 book ai didi

c# - 如何使用一个固定参数和集合中的另一个参数编写 Parallel.ForEach?

转载 作者:太空狗 更新时间:2023-10-29 22:23:50 25 4
gpt4 key购买 nike

我有一个像这样的 foreach 方法:

public void Initialize(ClassB fixed)
{
foreach (ClassA item in itemCollection)
{
this.InitializeStock(fixed, item);
}
}

我想将 Parallel.ForEach 与这个一起使用,但不确定如何使用。我无法将固定参数设置为类属性,因为已经从另一个 Parallel.ForEach 调用了 Initialize 方法。

提前致谢。

最佳答案

不清楚是什么问题。这应该没问题:

public void Initialize(ClassB fixed)
{
Parallel.ForEach(itemCollection, item =>
{
this.InitializeStock(fixed, item);
});
}

fixed 变量将被 lambda 表达式捕获,以便在调用 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);
}

...但实际上,您更愿意阅读哪一本?

关于c# - 如何使用一个固定参数和集合中的另一个参数编写 Parallel.ForEach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com