2013-02-21 49 views
0

通常,billings應該在預定日期的後臺執行(我還沒有想出如何做到這一點,但這是另一個話題)。如何保證長時間的操作完成

但是有時,用戶可能希望手動執行計費。一旦點擊,我想確保操作完成,無論用戶端發生什麼(例如關閉瀏覽器,機器死機,網絡關閉,無論如何)。我很確定db.SaveChanges()將它的數據庫操作包裝在一個事務中,所以從服務器的角度來看,我相信整個事情會完成或失敗,沒有部分影響。

但是POST和db.SaveChanges()之間的所有工作怎麼辦?有沒有辦法確保用戶不會無意中或故意阻止它完成?

我想這個問題的必然結果是運行異步控制器或運行TaskThread如果用戶斷開連接?

回答

0

我以前的項目實際上是在MVC中進行計費系統。我清楚地記得測試如果我使用Task會發生什麼,然後快速退出該網站。它完成了所有的計算,在SQL Server中運行了一個存儲過程,並在完成時向我發送了一封電子郵件。

因此,要回答您的問題:如果您將操作包裝在Task中,它應該完成任何操作,而不會出現任何問題。

+1

'Task.Factory.StartNew(()=> {ExecuteBilling(billingDate);});' - 哇,這很容易。謝謝! – 2013-02-21 21:08:43

相關問題