Asp.net mvc asp.net中有更好的计时器吗?

Asp.net mvc asp.net中有更好的计时器吗?,asp.net-mvc,timer,Asp.net Mvc,Timer,我在asp.net中使用global.as中的System.Timers.timer来设置用于调度执行的计时器 作用 让我们说转移钱。 但似乎这个计时器可能会在几个小时后停止。 这导致所有的行动都悬而未决。 我想知道是否有更好的方法在asp.net、MVC1.0中设置计时器? 提前谢谢 您可以尝试system.threading.timer 您将在ASP.NET应用程序中使用的任何计时器最终都将“终止”,但这是一种非常预期的行为,因为。计时器永远不会工作,因为IIS将根据应用程序池设置定期重新安

我在asp.net中使用global.as中的System.Timers.timer来设置用于调度执行的计时器 作用 让我们说转移钱。 但似乎这个计时器可能会在几个小时后停止。 这导致所有的行动都悬而未决。 我想知道是否有更好的方法在asp.net、MVC1.0中设置计时器?
提前谢谢

您可以尝试system.threading.timer


您将在ASP.NET应用程序中使用的任何计时器最终都将“终止”,但这是一种非常预期的行为,因为。

计时器永远不会工作,因为IIS将根据应用程序池设置定期重新安排工作进程,因此当它回收时,您的计时器将被销毁,您可能需要重新打开它


您可以检查计时器对象是否仍然可用,如果不可用,请创建它!!,使用任何其他计时器对象都不起作用。但这仍然有一个问题,因为如果在特定时间段内没有任何web请求,它仍然会被销毁。最好是在其他地方安装一个ping监视器,这样可以让你的网站保持活力。

这可能只是因为应用程序被回收了。Global.ashx并不是执行长时间运行任务的合适地方,因为如果AppDomain被回收,计时器就会死机。我建议改为使用windows服务

编辑:在VisualStudio中创建windows服务项目相当容易,只需执行[File]>[Add]>[New project…]>[windows]>[windows服务],您将获得该项目的存根代码

很难想出一个完整的例子,所以我建议你有很多样品供你看


on CodeProject似乎是对Windows服务的一个很好的介绍。

您无法在ASP.NET中可靠地运行计时器。如果没有请求传入,IIS可以关闭应用程序,直到下一个请求到达,应用程序才会启动

你为什么认为你需要一个计时器?在大多数web应用程序中,除非依赖于外部源,否则根本不需要定期更新

如果您只是在应用程序中移动数据,那么实际事务不必以精确的时间间隔发生,您只需计算如果它们发生了会产生什么结果。每当一个请求传入时,您都会计算自上次请求以来将发生多少事务,并执行这些操作以赶上当前状态


如果您的事务依赖于外部源,因此它们实际上必须在特定的时间运行,那么您无法单独使用ASP.NET来完成。您需要一个在IIS之外运行的应用程序,例如由windows调度程序定期启动的应用程序。

那么我如何避免这种情况呢???我在谷歌上搜索了一下,我知道System.timers.timer用于服务器,但它有什么特殊功能吗?如何处理?你能给我一些示例代码吗?正如他所说,正在运行另一个程序(如windows服务),问题基本上是你的应用程序(网站)经常被服务器回收政策关闭。。如果您想要长时间运行的任务,最好使用windows服务。