C# TPL-局部变量一次性意大利化

C# TPL-局部变量一次性意大利化,c#,task-parallel-library,C#,Task Parallel Library,我有一个关于第三方物流的简短问题。 我希望每一个线程都是并行的。为了有一个只分配一次值的整数(在初始化时,并且永远不会更改-特定于线程) 即使使用LocalStorage,我也无法让任何东西正常工作 例如: 4个线程,每个线程都有int localvar=用{1,2,3,4}初始化,并且在所有for循环期间应保持相同的值 非常感谢 编辑 当运行此 ParallelOptions options = new ParallelOptions(); options.M

我有一个关于第三方物流的简短问题。 我希望每一个线程都是并行的。为了有一个只分配一次值的整数(在初始化时,并且永远不会更改-特定于线程)

即使使用LocalStorage,我也无法让任何东西正常工作

例如: 4个线程,每个线程都有int localvar=用{1,2,3,4}初始化,并且在所有for循环期间应保持相同的值

非常感谢

编辑

当运行此

 ParallelOptions options = new ParallelOptions();
                options.MaxDegreeOfParallelism = 4                
int ir = 0;
                Parallel.For(0, 10, options, () => ir++, (index, s, n) =>
                {
                    Console.WriteLine(n); return n;
                }, n => { });
resukt是接受本地init块的使用。它是专门为此而设计的:

int i = 0;
Parallel.For(0, 10, () => i++, (index, s, n) =>
{
    Console.WriteLine(n); return n;
}, n => { });

这正是我所做的,但是在for循环的每次迭代中,
()=>I++
部分被调用,这导致
I
一直递增,这是错误的。@VLT那么您没有使用正确的重载。循环的每次迭代都不会调用它,在你的例子中,我一直递增到10,而我需要每次递增一次thread@VLT当我运行它时,它不会增加到10。您可能更改了某些内容,或者实际上使用了10个线程。因此,即使多次调用
Parallel.For
,您仍然希望这些值保持不变?@Noseratio不,这不是强制性的。我只希望它们在相同的for循环中保持不变。事实上,顶部答案中给出的解决方案似乎是合法的,我一开始就是这样做的,但它仍然在增加局部变量
n
,即使它达到MaxDegreeofParallelism