ASP.Net应用程序的轮询策略?

时间:2009-04-02 19:26:37

标签: asp.net polling

我有一个ASP.Net应用程序,需要有一些工作由另一台机器执行。为此,我将在两台机器都可见的队列中留下一条消息。工作完成后,第二个队列上会留下一条消息。

我需要ASP.Net应用程序定期检查第二个队列,看看是否有任何任务完成。

除了这样的循环,最好的地方在哪里?的Global.asax?

我记得在某个地方读过你可以得到一个间隔后调用的函数。那会合适吗?

2 个答案:

答案 0 :(得分:1)

我认为这是定期完成的,而其他一些进程会将这些项目放在队列中?

如果是这种情况,您可以在Global.asax中放置一些东西,在应用程序启动时创建一个单独的线程来监视队列,您可以使用一个计时器让该线程休眠X秒,然后检查结果。

答案 1 :(得分:1)

为了在asp.net上实现定期任务,我发现了两种可接受的方法:

  1. 在application_Start期间在global.asax中,在while循环中生成一个线程(1)执行工作(2)将线程休眠一段时间。
  2. 再次在Application_Start中,将一个虚拟项插入到asp.net缓存中,在某个时间间隔内到期,并为该缓存项提供一个在其过期时调用的回调。在该回调中,您可以执行工作并以相同的方式插入缓存项。
  3. 在这两种方式中,您都需要确保即使发生错误,您的线程也会继续工作。您可以在SessionStart和BeginRequest中放置一个恢复代码来检查您的线程或缓存项是否存在,并在发生某些事情时更新它。