CSharp · Console
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.NetworkInformation;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
public class Program
{
private static List<IPStatus> _results;
public static async Task MyMethodAsync(IPAddress ip)
{
await Task.Delay(500);
Console.WriteLine("processing");
}
public static async Task Asd()
{
var options = new ExecutionDataflowBlockOptions{MaxDegreeOfParallelism = 2};
var block = new ActionBlock<IPAddress>(ip => MyMethodAsync(ip), options);
var list = new List<IPAddress>{IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback, IPAddress.Loopback};
foreach (var ip in list)
{
block.Post(ip);
}
block.Complete();
await block.Completion;
}
public static void Main()
{
Asd().Wait();
Console.WriteLine("Finish");
}
}