Parallel是在Task之后出现的API
Parallel在调用的时候,会阻塞当前线程
{
//跟for循环一样,会启动5个线程,并传入0-5循环的值,在第二个参数i中拿取
Parallel.For(0, 5, i => this.DoSomethingLong($"btnParallel_Click_{i}"));
}
{
//也可以使用ForEach
Parallel.ForEach(new int[] { 0, 1, 2, 3, 4 }, i =>this.DoSomethingLong($"btnParallel_Click_{i}"));
}
{
//ParallelOptions API可以设置Parallel并行线程上限(最好不要直接设置线程池,因为线程池是全局的)
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 3;
//在这里把options参数传入即可
Parallel.For(0, 10, options, i => this.DoSomethingLong($"btnParallel_Click_{i}"));
}
{
//有没有办法不阻塞d当前线程?
//新建个Task运行即可
Task.Run(() =>
{
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 3;
Parallel.For(0, 10, options, i => this.DoSomethingLong($"btnParallel_Click_{i}"));
});
}