0

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

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

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

我记得在某处读过,您可以在间隔后调用一个函数。那会合适吗?

4

2 回答 2

1

我假设这是定期完成的,并且其他一些过程将项目放入队列中?

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

于 2009-04-02T19:30:14.467 回答
1

为了在 asp.net 上完成定期任务,我找到了两种可接受的方法:

  1. 在 global.asax 的 Application_Start 期间在 while 循环中生成一个线程 (1) 执行工作 (2) 让线程休眠一段时间。
  2. 再次在 Application_Start 中,将一个虚拟项目插入到 asp.net 缓存中,在某个时间间隔内过期,并为该缓存项目提供一个回调,以便在它过期时调用。在该回调中,您可以完成工作并以相同的方式插入缓存项。

在这两种方式中,您都需要确保即使发生错误,您的线程也能继续工作。您可以在 SessionStart 和 BeginRequest 中放置一个恢复代码,以检查您的线程或缓存项是否存在,如果发生问题则更新它。

于 2009-04-02T20:41:32.317 回答