代码之家  ›  专栏  ›  技术社区  ›  Les

ASPX页面的多个回发

  •  0
  • Les  · 技术社区  · 15 年前

    我有一个aspx页面,有一个简单的表单,可以向预定义的用户列表发送电子邮件。在较长的列表中,页面通常会在电子邮件发送完成之前超时,但这从来不是问题。

    今天发生了奇怪的事情,每个用户都收到了四封电子邮件。在日志中,我可以看到三个新线程一次启动一个,然后从列表的开头重新发送。

    有什么想法吗?我完全知道我不是故意刷新网页的,当然也不是三次。但浏览器(IE8)能做到吗?它会在超时时再次尝试重新建立连接吗?或者当我从另一个应用切换回浏览器窗口时?我以前从没见过这样的行为。

    1 回复  |  直到 15 年前
        1
  •  0
  •   RichardW1001    15 年前

    第一个问题是是否有任何理由同步执行一个长时间运行的任务,即锁定一个线程,该线程应该为web请求提供可以在后台完成的任务,而浏览器则坐在那里等待一个可能得不到的响应。我会考虑异步运行,除非有一个非常深思熟虑的理由不这样做。

    第二,您是否考虑过创建某种锁定机制,使进程不能启动多次?我有一个过程,我在应用程序缓存中添加一个令牌(当我完成时删除它),这样如果令牌存在,进程就不会再运行(没有调用异步任务),这就完成了任务。这样,不管有多少客户机调用您的代码,您都可以防止事情超出应有的范围。

    推荐文章