簡體   English   中英

取消長時間運行的任務Asp.net

[英]Cancelling long running tasks Asp.net

我正在使用ASP.NET WebForms。 在回發中,我創建一個任務(任務運行時間很長)。 在html頁面中,我需要一個可以取消此任務的按鈕。 1.我單擊“在服務器上運行任務的GetResults”按鈕。2.等待一會后,單擊“取消”按鈕,我需要任務將被取消

我怎樣才能做到這一點?

盡管可以做到,但是在ASP.NET中創建長期運行的任務通常不是一個好主意,尤其是當它們是后台任務時。

菲爾·哈克(Phil Haack)在這方面有一篇很棒的文章-http: //haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

這是關於該主題的另一篇好文章-http: //blog.stephencleary.com/2012/12/returning-early-from-aspnet-requests.html

您可以為此考慮諸如消息總線之類的事情。 您還可以考慮數據庫中的一個簡單TaskQueue表,您的Web應用程序將在其中插入與您的任務相對應的狀態為“待處理”的記錄。 然后,您可以擁有一個后台服務(例如Windows服務),該服務讀取“待處理”任務並將其在處理過程中標記為“正在進行中”,並在完成時將其標記為“完成”。 這樣,當任務為“待處理”時,您可以讓用戶從UI取消任務,這將簡單地從數據庫中刪除“待處理”記錄。

另一種選擇是使用這樣的解決方案-http://hangfire.io/

暫無
暫無

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

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