2016-08-04 97 views
0

我具有執行以下操作的控制器方法:減少冗長ASP.Net MVC的控制器方法

  1. 載荷從數據庫
  2. 信息,執行某些邏輯檢查
  3. 移動文件周圍
  4. 更新信息在數據庫中
  5. 自動發送電子郵件給(可能)大量的收件人

這種方法需要很長時間才能完成,我相信在這個過程結束時發送電子郵件的主要原因。直到步驟4成功完成後,我才能將成功/失敗返回給用戶。

爲了加快頁面響應時間,我想真正回來之前第5步開始用戶的響應,因爲用戶並不真正需要知道的步驟5

的結果

我的第一個想法是製作兩個控制器方法,當客戶端從第一個方法得到結果時,客戶端會自動選擇第二個方法 - 但我寧願不把這個邏輯放到客戶端手中。

達到此目的的最佳方法是什麼?

+0

將電子郵件功能放入異步方法,並在調用該方法後返回 – Nkosi

+0

也可以在並行foreach中調用發送電子郵件功能! – Hackerman

回答

1

您可以在您的操作的第5步中使用QueueBackgroundWorkItem來排隊電子郵件工作,然後立即返回到客戶端。

HostingEnvironment.QueueBackgroundWorkItem(e => 
{ 
    SendEmail(); 
});