我加載使用代碼一個GridView在此基礎上:取消一個ASP.NET回調處理
http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx
我使用回調來填充網格,有時會有大量的數據或用戶的想取消。
當用戶點擊取消時,如何取消在服務器上處理的回調?
感謝
我加載使用代碼一個GridView在此基礎上:取消一個ASP.NET回調處理
http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx
我使用回調來填充網格,有時會有大量的數據或用戶的想取消。
當用戶點擊取消時,如何取消在服務器上處理的回調?
感謝
AFAIK,您不能取消服務器端調用歸還處理一旦啓動。最多可以有一些客戶端(瀏覽器)端邏輯忽略回調結果。無論如何,我會建議您使用ASP.NET AJAX(UpdatePanel
或Script Services
),而不是使用ICallbackEventHandler
。它使用起來非常簡單,而且更加靈活。此外,您還可以選擇取消回調:請參閱this article取消更新面板回調(注意,取消確實意味着停止等待(&忽略)回調結果,服務器端處理將會發生)。
搜索相當廣泛,發現它可以Cancel Server Tasks with ASP.NET & AJAX
雖然我不擅長與AJAX,發現了一些鏈接,可以幫助你,
下面是如何Canceling Server Tasks with ASP.NET & AJAX和這裏的一對東西forum thread類似於你的問題。
希望它有幫助!
向服務器發起請求後,客戶端無法取消它。忽略任何可能的「可取消方法」的機制,你已經開始向服務器發出請求。任何進一步的通信都會導致一個新的請求,以便原始請求將繼續,直到完成。記住HTTP是一種無狀態協議,每個請求都不知道任何以前的請求,因此,它如何取消先前的請求?
如果您確實需要取消可能仍在服務器上處理的長時間運行的任務,則最好是忽略服務器響應或,您需要自己烘焙該支持,例如Web服務器將不會本地支持它。要做到這一點,你可能需要一些方法來保持跨多個http請求的任務狀態,並讓原始請求(運行該任務的那個請求)監視某種取消標誌。
只要記住,在上面的場景中,您不會取消請求,而是請求正在運行的任務。