【发布时间】:2016-09-21 10:45:56
【问题描述】:
我正在开发一个 MVC 应用程序,它有一个方法,应该在一天结束时运行。我无权访问 Windows 任务调度程序,并且无法实现 Windows 服务。 (因为部署的包应该交给不同的客户,他们有自己的服务器。在这种情况下,我们不会部署 windows 服务或使用任务调度程序)
请告诉我是否有任何方法可以在特定时间执行某些方法。 我看到有使用计时器的方法。但问题是这项工作应该每天只做一次,并且过程不会超过 1 分钟。
如果我们使用定时器,资源将分配给定时器服务,我猜这不是一个好方法,因为这种方法一天只运行一次。 (进程在其他 23 小时 59 分钟内运行,这是在浪费资源。我猜计时器的概念是可以的,如果进程每 5,10 分钟运行一次)
请给我方向....
【问题讨论】:
-
看看石英作业调度器。
-
“实现windows服务是不可能的”,为什么不可能?当项目部署到您的客户时,它可以安装 Windows 服务作为部署过程的一部分...如果您想每天在 客户的机器上执行一次方法,您必须有一些长期的-仍然在运行应用程序
-
看看 HangFire,它是为您描述的目的而设计的,并且可以在给定的时间触发工作/方法:hangfire.io
-
@Fabjan : 有成千上万的客户在使用我们的应用程序。那么如何一一做到这一点呢?我们只需要部署包并顺利运行系统和调度程序。
-
我用的是石英。它与 startup.cs 工作正常。但问题是我无法在“执行”方法中初始化类对象,这是方法实现在其他项目中。 (IJob 有一个名为“Execute”的方法)不幸的是,它没有提供复制粘贴代码的工具,到目前为止,我在评论部分通过堆栈溢出所做的事情。我红色的几篇文章,它不能在启动cs或application_start()方法中初始化其他类对象。
标签: c# asp.net-mvc-4 scheduling