我們正在開發WebAPI,其中有大約200個項目的解密邏輯(可以更多)。每次解密大約需要20ms。 我們試着平行完成這些任務,以便儘快完成任務,但看起來我們正在獲得某種限制,因爲線程正在等待舊線程完成而被重用(並且在那裏只有少數人使用) - 總體行動需要大約1-2秒鐘才能完成......WebAPI中的線程(任務)限制(或一般情況下)
我們基本上想要達到的目標是讓x個線程同時啓動並在這些〜20 ms之後完成。
我們嘗試了這一點: Await multiple async Task while setting max running task at a time
但似乎這只是說明設置限制,而我們要釋放它...
這裏有一個片段:
var tasks = new List<Task>();
foreach (var element in Elements)
{
var task = new Task(() =>
{
element.Value = Cipher.Decrypt((string)element.Value);
}
});
task.Start();
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
是我們在這裏失蹤?
謝謝, Nir。
除非您正在編寫任務調度程序,否則不應該調用'新任務('),而應該使用'Task.Run'。 –