2015-09-04 109 views
0

我需要能夠異步進行所有電子郵件調用。我們如何完成這樣的事情。因此,讓我們假設我有一個方法A發送電子郵件異步方法

public void A() { 
    SendEmail(); 
} 

public void SendEmail() { } 

如何使此SendEmail()方法異步?我們只是做類似

public async void SendEmail() { } 

謝謝。

+0

要異步調用SendEmail,請使用Task.Factory.StartNew(()=> SendEmail())。 –

+0

完美。謝謝。 – JohnnyCage

回答

0

創建一個異步包裝

public Task void SendEmailAsyn() { 
    return Task.Factory.StartNew(() => { SendEmail(); }); 
} 
0

我們推薦返回Task,所以我返回它,而不是返回void:

async Task SendEmail() 
{ 
    //Do Something 
} 

任務是最好的,因爲你要提供你的來電者(也許你自己),以等待任務比如發送電子郵件。

同樣的任務可以用別的東西來續:

await SendEmail().ContinueWith(SendNotification); 
0

有做異步的電子郵件,並對其進行管理的工具更簡單的方法是建立直接進入操作系統。我提供了一個類似的答案來回答一個稍微不同的問題:https://stackoverflow.com/a/30768906/964043

基本上,你可以使用System.Net.Mail.SmtpClient迅速排隊它只是通過設置寫入磁盤在後臺打印文件夾的郵件DeliveryMethodPickupDirectoryFromIis。在運行的服務器上,您只需要在同一臺計算機上設置並配置Microsoft SMTP服務,以指向一個有效的SMTP服務器,它將爲您轉發消息。這意味着您已經擁有一個完全線程化和高性能的方法,可以異步發送電子郵件,而無需親自編寫任何代碼。適用於從Web應用程序,Web服務或任何其他基於服務器的應用程序發送消息。