for (int i = 0; i < 50; i )
{
Thread T1 = new Thread(delegate ()
{
Console.WriteLine("email sent..");
smtp.Send(msg);
});
T1.Start();
}
我正在嘗試使用 smtp.Send(msg) 通過多執行緒發送批量請求。
我已經嘗試了上面的代碼,但我收到了這個錯誤
異步呼叫已在進行中。必須先完成或取消才能呼叫此方法
我該如何解決這個問題。
uj5u.com熱心網友回復:
如果您使用以下客戶端。我建議您重構代碼,如下所示:
var tasks = new List<Task>()
for (int i = 0; i < 50; i )
{
task.Add(smtp.SendAsync(msg));
}
await Task.WhenAll(tasks)
有什么不同?
使用任務將在后臺使用執行緒,但會負責所有執行緒的調度和清理。如果您想向應用程式應用程式添加并行性和并發性, c# TPL是要走的路(我從上面的鏈接中竊取了該行)
考慮到@phuzi 對您的問題的評論,您可能需要在 for 回圈中實體化一個客戶端。
請記住,這將使用等待,因為您必須將異步添加到您的函式簽名中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467280.html
