//多线程
List<Task> tasks = new List<Task>()
int maxTaskCount = 10
SemaphoreSlim semaphore = new SemaphoreSlim(maxTaskCount)
for (var i = 0
{
await semaphore.WaitAsync()
int index = i
string f = lmv[i]
string name = lmv_name[i]
var ctime = name.Split('_')[6].Split('-')[3].Split('.')[0]
tasks.Add(Task.Run(async () =>
{
try
{
await ProcessFileAsync(f, name)
}
finally
{
semaphore.Release()
}
}))
if (tasks.Count > maxTaskCount)
{
// 等待任何一个完成,不会阻塞当前线程
await Task.WhenAny(tasks)
// 排除掉已完成的任务
tasks.RemoveAll(t => t.IsCompleted)
}
}
// 等待所有任务完成
await Task.WhenAll(tasks)