static void Main()
{
Foo();
Console.ReadLine();
}
private static async Task Foo()
{
var urls = new[] {
"A",
"B",
"C",
"D",
"E",
};
var maxThreads = 4;
var q = new ConcurrentQueue<string>(urls);
var tasks = new List<Task>();
for (int n = 0; n < maxThreads; n++)
{
tasks.Add(Task.Run(async () =>
{
while (q.TryDequeue(out string url))
{
Console.WriteLine($"start {url}");
await Task.Delay(3000);
Console.WriteLine($"end {url}");
}
}));
}
await Task.WhenAll(tasks);
}
ref: sound code
2018年12月19日 星期三
【C#】Max concurrent tasks
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言