我正在使用基于此的代码加载gridview:
http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx
我正在使用回调来填充网格,有时会有很多数据或者用户想要取消。
当用户点击取消时,如何取消在服务器上处理的回调?
感谢
答案 0 :(得分:3)
进行了广泛搜索,发现可以Cancel Server Tasks with ASP.NET & AJAX
虽然我对AJAX并不擅长,但找到一些可以帮到你的链接,
以下是Canceling Server Tasks with ASP.NET & AJAX以及forum thread与您的问题类似的问题。
希望它有所帮助!
答案 1 :(得分:2)
AFAIK,一旦启动就无法取消服务器端回叫处理。最多,您可以使用一些忽略回调结果的客户端(浏览器)端逻辑。
无论如何,我建议您使用ASP.NET AJAX(UpdatePanel
或Script Services
)而不是ICallbackEventHandler
。它使用起来非常简单,而且更加灵活。此外,您还可以选择取消回调:请参阅this article取消更新面板回调(请注意,取消实际上意味着停止等待(并忽略)回调结果,服务器端处理将会发生)。
答案 2 :(得分:1)
一旦您向服务器发起了请求,客户端就无法取消它。忽略任何可能的“可取消方法”周围的机制,您已经开始向服务器发出请求。任何进一步的通信都将产生新的请求,因此原始请求将一直持续到完成为止。记住HTTP是一种无状态协议,每个请求都不知道任何先前的请求,因此,它如何取消先前的请求?
你最好的选择是忽略服务器响应,或如果你真的需要取消可能仍然在服务器上处理的长时间运行的任务,你需要烘焙支持自己,因为Web服务器本身不会支持它。为此,您可能需要某种方式在多个http请求之间保持任务状态,并让原始请求(运行该任务的请求)监视某种取消标记。
请记住,在上面的场景中,您不会取消请求,而是请求正在运行的任务。