簡體   English   中英

我想在控制台應用程序中使用 smtp 一次發送多個 email 請求。如何使用線程一次發送批量 email 請求

[英]I want to send multiple email request at a time using smtp in console application .how I can send bulk email request at a time with using threading

for (int i = 0; i < 50; i++)
{
    Thread T1 = new Thread(delegate ()
    {
            Console.WriteLine("email sent..");
            smtp.Send(msg);
    });
    T1.Start();
}                       

我正在嘗試使用 smtp.Send(msg) 通過多線程發送批量請求。

我已經嘗試了上面的代碼,但出現了這個錯誤

異步調用已在進行中。 必須先完成或取消才能調用此方法

我該如何解決這個問題。

如果您使用以下客戶端 我建議您重構您的代碼,如下所示:

var tasks = new List<Task>()
for (int i = 0; i < 50; i++)
{
    task.Add(smtp.SendAsync(msg));
}
await Task.WhenAll(tasks)

有什么不同?

使用任務將在后台使用線程,但會負責所有線程調度和清理。 c# TPL是通往 go 的途徑,如果你想為你的應用程序添加並行性和並發性(我從上面的鏈接中偷走了那一行)

考慮到@phuzi 對您的問題的評論,您可能需要在 for 循環中實例化一個客戶端。

請記住,這將使用等待,因為您必須將異步添加到您的 function 簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM