以下是这种情况:在用户登录时,我启动了一个正在侦听IMAP闲置以接收邮件通知的任务,并且它通过信号器(推送通知类型)与客户端进行了实时连接。现在的问题是我如何取消这项任务?即用户取消推送通知或注销..如何通过Web请求取消异步任务?
编辑:根据我的理解,例如,如果5个用户登录到该网站有5个任务运行?所以我如何取消个人任务。
以下是这种情况:在用户登录时,我启动了一个正在侦听IMAP闲置以接收邮件通知的任务,并且它通过信号器(推送通知类型)与客户端进行了实时连接。现在的问题是我如何取消这项任务?即用户取消推送通知或注销..如何通过Web请求取消异步任务?
编辑:根据我的理解,例如,如果5个用户登录到该网站有5个任务运行?所以我如何取消个人任务。
异步工作人员必须进行修改以支持取消
http://www.csharp-examples.net/cancel-asynchronous-method/
你也可以使用后台工作人员这是一个有点不太复杂 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.cancelasync.aspx
我曾经遇到过一个问题,当你发送取消已经开始作业的外部源(数据库,应用程序),如果它不支持取消,则可能需要等到它完成。
编辑:我从来没有这样做与MVC,但发现一个好的文章'使用取消令牌'的asycn过程,需要在MVC4 CancellationToken参数。 http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4 希望它有帮助。
该过程可以在没有用户活动的情况下自杀。 在另一个线程中交换变量的最简单方法 - 一个文件。 假设客户端浏览器仍处于打开状态,javascript定时器会调用Ajax请求,这会在服务器上将时间戳记写入文件。您的任务也会定期读取文件,并且当时间戳太旧时,该进程会自杀。您可以设置您的选择的活动超时值。
你能否澄清,'任务'进程正在执行Web服务或Windows服务或其他? –
hi @HarshBaid任务在mvc应用程序中运行。 – Iternity