Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用计时器每小时运行一次if语句_C#_Asp.net_Asp.net Mvc 3_Timer - Fatal编程技术网

C# 使用计时器每小时运行一次if语句

C# 使用计时器每小时运行一次if语句,c#,asp.net,asp.net-mvc-3,timer,C#,Asp.net,Asp.net Mvc 3,Timer,我一直在阅读有关计时器的内容,以及实现目标的选项,我相信我需要使用system.timers.timer并正确设置间隔 我想我知道怎么做,但我不确定的是在哪里做,我的控制器global.asax在我看来是否这样做 也许我根本不应该用计时器 我要寻找的是在每小时运行一个if语句的最佳方式,并根据if的结果更新视图。通常,web应用MVC或WebForms不是运行计划任务的最佳位置。这是可以做到的,但是你会得到一些东西,比如IIS回收应用程序池和其他异常情况,这些虽然对web应用程序有用,但可能会妨

我一直在阅读有关计时器的内容,以及实现目标的选项,我相信我需要使用system.timers.timer并正确设置间隔

我想我知道怎么做,但我不确定的是在哪里做,我的控制器global.asax在我看来是否这样做

也许我根本不应该用计时器


我要寻找的是在每小时运行一个if语句的最佳方式,并根据if的结果更新视图。通常,web应用MVC或WebForms不是运行计划任务的最佳位置。这是可以做到的,但是你会得到一些东西,比如IIS回收应用程序池和其他异常情况,这些虽然对web应用程序有用,但可能会妨碍可靠地安排任务

很多开发人员和我最喜欢的人也将他们的任务安排在不同的时间。这可以安装,并且可以设置为在服务器启动和关闭时正常启动和停止。然后,您可以设置日志记录和其他运行状况监视,以监视计划程序服务的状态

但是,如果您的任务纯粹是基于SQL的,您可能希望对任何其他数据库使用SQL Server的内置调度或类似功能。另一种选择是使用操作系统的调度程序

编辑


关于使用结果更新视图,您可以在数据库中存储和更新计划任务的状态,其中包含“TaskStatus”New、Waiting、Running、Aborted、Failed、Cancelled、Completed和“TaskResult”等列,这些列可能为空表示成功,也可能为来自失败的错误消息。然后,您可以通过从数据库检索结果视图来显示和筛选此信息。

通常,web应用MVC或WebForms不是运行计划任务的最佳位置。这是可以做到的,但是你会得到一些东西,比如IIS回收应用程序池和其他异常情况,这些虽然对web应用程序有用,但可能会妨碍可靠地安排任务

很多开发人员和我最喜欢的人也将他们的任务安排在不同的时间。这可以安装,并且可以设置为在服务器启动和关闭时正常启动和停止。然后,您可以设置日志记录和其他运行状况监视,以监视计划程序服务的状态

但是,如果您的任务纯粹是基于SQL的,您可能希望对任何其他数据库使用SQL Server的内置调度或类似功能。另一种选择是使用操作系统的调度程序

编辑


关于使用结果更新视图,您可以在数据库中存储和更新计划任务的状态,其中包含“TaskStatus”New、Waiting、Running、Aborted、Failed、Cancelled、Completed和“TaskResult”等列,这些列可能为空表示成功,也可能为来自失败的错误消息。然后,您可以通过从数据库检索结果视图来显示和过滤这些信息。

更新视图是什么意思

MVC视图是一个类-您只能在对象具有值时更新对象。当用户请求页面时,视图被实例化

如果您的意思是希望用户在浏览器中始终打开一个页面,并且该页面每小时刷新一次,那么您可以在客户端上使用javascript中的计时器每小时重新加载一次页面


如果您想根据每小时更改的数据更新任何用户打开页面的结果,可以将上次更新时间存储在数据库中,然后在视图运行时检查数据是否超过一小时。如果是,请在控制器中运行If语句。

更新视图是什么意思

MVC视图是一个类-您只能在对象具有值时更新对象。当用户请求页面时,视图被实例化

如果您的意思是希望用户在浏览器中始终打开一个页面,并且该页面每小时刷新一次,那么您可以在客户端上使用javascript中的计时器每小时重新加载一次页面

如果您想根据每小时更改的数据更新任何用户打开页面的结果,可以将上次更新时间存储在数据库中,然后在视图运行时检查数据是否超过一小时。如果是,请在控制器中运行If语句。

JavaScript-在您的页面上: 您可以通过JavaScript重定向到所需的控制器>操作:

<script type="text/JavaScript">
setTimeout("location.href = '/YourDefineUrlPathHere';",1500);
</script>
定时器–在控制器中

如果您想长时间保持连续工作,计时器不是非常有效的解决方案 然而,另一种方式,我想更“标准”的方式,以实现您的结果可以通过窗口服务,如果你想追求这个方向,这个链接可能会帮助你很多。

JavaScript-在您的页面上: 您可以通过JavaScript重定向到所需的控制器>操作:

<script type="text/JavaScript">
setTimeout("location.href = '/YourDefineUrlPathHere';",1500);
</script>
定时器–在控制器中

如果您想长时间保持连续工作,计时器不是非常有效的解决方案

然而,另一种方式,我想更“标准”的方式,以实现您的结果可以通过窗口服务,如果你想追求这个方向,这个链接可能会帮助你很多。


使用Azure函数。您可以使用计时器触发器运行计划任务。非常好


使用Azure函数。您可以使用计时器触发器运行计划任务。非常好


你没有提到你是否在任何云平台上运行,但Windows Azure可以使用它的各种角色方案来处理此问题。你没有提到你是否在任何云平台上运行,但Windows Azure可以使用它的各种角色方案来处理此问题。嗨,我的意思是我确实想在一小时内刷新页面,但我想看看是否有可能重新运行我的if语句,并将结果推送到浏览器,这样就不会刷新整个页面。我想我现在明白了,简单的刷新将是最好的解决方案。谢谢你的评论。我的意思是,我确实想在一小时内刷新页面,但我想看看是否有可能重新运行我的if语句,并将结果推送到浏览器,以避免刷新整个页面。我想我现在明白了,简单的刷新将是最好的解决方案。谢谢你的评论。最后,我编写了一段简单的代码,计算出离一小时之交还有多长时间,然后将结果设置为刷新间隔。谢谢你的评论。最后,我编写了一段简单的代码,计算出离一小时之交还有多长时间,然后将结果设置为刷新间隔。谢谢你的评论
aTimer = new System.Timers.Timer(10000);
aTimer.Elapsed += new ElapsedEventHandler(YourMethodHere);
aTimer.Interval = 2000;
aTimer.Enabled = true;