我有一个带有简单表单的aspx页面,可以将电子邮件发送到预定义的用户列表。在较长的列表中,页面通常会在电子邮件完成发送之前超时,但这从来就不是问题。
今天发生了一些奇怪的事情,每个用户收到了四封电子邮件。在日志中,我可以看到三个新线程一次启动一个并从列表的开头开始发送。
有什么想法吗?我绝对知道自己并没有故意刷新网页,当然也不是三次。但浏览器(IE8)可以做到吗?是否会在超时后重新发布尝试重新建立连接?或者当我从另一个应用程序切换回浏览器窗口时?我以前从未见过这样的行为。
答案 0 :(得分:0)
第一个问题是,是否有任何理由同步执行长时间运行的任务,即锁定应该为后台可以完成的事情提供Web请求的线程,同时浏览器坐下等待回应它可能不会得到。除非有非常慎重的理由不这样做,否则我会考虑异步运行。
其次,您是否考虑过创建某种锁定机制,以使该过程不能多次启动?我有一些进程,我将一个令牌添加到应用程序缓存(并在我完成时删除它),这样如果令牌存在,进程将不会再次运行(不会调用异步任务),并且做的工作。这样,无论有多少客户端调用您的代码,您都可以防止发生的事情超出预期。