我們正在運行一個ASP.NET WebAPI 2服務,我們想用記錄器將一些請求記錄到電子郵件/數據庫。QueueBackgroundWorkItem是否實際排隊後臺工作?
因爲它是後臺工作,並且因爲在asp.net中我想我們應該使用HostingEnvironment.QueueBackgroundWorkItem
在後臺運行它。
我希望我的日誌全部按順序排列 - 令我驚訝的是我找不到任何指示QueueBackgroundWorkItem
實際上確保排隊的工作項順序運行或指示它不運行的任何事情。
所以,我的問題是:QueueBackgroundWorkItem
保證按順序執行排隊工作嗎?
HostingEnvironment.QueueBackgroundWorkItem((e) => Console.WriteLine("A"));
HostingEnvironment.QueueBackgroundWorkItem((e) => Console.WriteLine("B"));
難道我知道,上面的代碼的輸出始終是:
A
B
或者也可以不按順序?這項工作排隊
我認爲你應該使用'Queue'對象爲你的目的 –
爲什麼你在第一次使用QBWI?如果您的主機決定回收,並且由於某種原因,操作未完成30秒,則會終止它。不要使用它。 [Additional Information here](http://blog.stephencleary.com/2014/06/fire-and-forget-on-asp-net.html)。如果你真的想要基於隊列的任務機制 - 你必須自己實現它。 –
@RoyiNamir 30秒比我需要的多得多,它支持取消。失敗總是計算中的一個選項,我只是看着取消令牌,當我看到它時,我會將消息推入隊列中。 –