C# · 12月 29, 2021

c# – AsParallel() – 在asp.net中并行有两个以上的线程

我有一种方法,我用不同的参数调用8次.
我用 AvailableYears.AsParallel() .Select<Int32,DateUsedByThread>(x => GetDataForYearWorker(x,CIF)) .ToList();

GetDataForYearWorker从Webservice同步获取响应.它在我的asp.net应用程序上使用非常少的计算能力,但是对于每个webservice响应来说,它的使用时间需要3-5秒.因为对webservice的调用是独立于彼此的,所以我想同时做所有的.但是看起来只有2个线程可以同时运行.为什么会这样,怎么能同时有8个线程工作?

解决方法 默认情况下.AsParallel()将在运行查询的计算机上为每个核心启动一个线程.如果你想改变这个行为看看 WithDegreeOfParallelism. AvailableYears.AsParallel().WithDegreeOfParallelism(5) .Select<Int32,CIF)) .ToList();