如果我们需要编写一个定期运行的程序,我们更喜欢哪种方式?编写Windows服务或编写一个按计划任务工作的控制台应用程序?
我使用servlet和JSP开发了一个Web应用程序.我本身并没有使用任何框架,而是使用我自己的自制MVC框架.我使用MySQL作为后端.
我想做以下事情:
问题是:目前我的所有代码都是从客户端收到的请求运行的.
如何在服务器端运行定期任务?
我现在的一个解决方案是在控制器的init函数中创建一个线程.还有其他选择吗?
我想在特定时间调用我的C#应用程序上的特定函数.起初我想过使用a Timer (System.Time.Timer),但很快就无法使用了.为什么?
简单.Timer类需要一个Interval毫秒,但考虑到我可能希望执行该函数,让我们在一周内说,这意味着:
现在让我们记住,Interval接受的数据类型是int,并且我们知道int范围从-2,147,483,648到2,147,483,647.
这使得Timer无用,不是在这种情况下,但是在超过25天的情况下,一旦我们无法设置Interval更大的2,147,483,647毫秒.
所以我需要一个解决方案,我可以指定何时应该调用该函数.像这样的东西:
solution.ExecuteAt = "30-04-2010 15:10:00";
solution.Function = "functionName";
solution.Start();
Run Code Online (Sandbox Code Playgroud)
因此,当系统时间到达"30-04-2010 15:10:00"时,该功能将在应用程序中执行.
怎样才能解决这个问题?
附加信息:这些功能将起什么作用?
编辑:
这似乎是在Interval接受数据类型double,但是如果你设置的值越大,一个int到Interval,并调用Start()它抛出一个异常[0, Int32.MaxValue].
编辑2:
JørnSchou -Rode建议使用Ncron来处理调度任务,起初看起来这似乎是一个很好的解决方案,但我想听听一些使用它的人.
我有一些在Java Quartz Jobs的帮助下执行的任务,但我需要在代码中通过某些条件来停止某些任务.我读到这可以通过InterruptableJob完成.但我不明白我该怎么做呢?
我在c#中有一个控制台应用程序,它由Windows任务调度程序在学习时间开始.该应用程序需要来自其自己目录的一些物理文件并System.IO.Directory.GetCurrentDirectory()用于此目的.
正常情况下,当我自己启动控制台应用程序时,它运行正常 但是当它由Windows任务计划程序启动时,它返回C:\Windows\System32.
为什么这不是应用程序目录,还有另外一种方法可以获取应用程序目录吗?
我在运行计划任务时遇到了重大问题.使用Microsoft提供的ITaskScheduler接口可以很好地创建任务.该任务设置为仅在用户登录时运行.
问题是该任务没有运行,日志文件SchedLgU.txt引用的原因是:
"The attempt to retrieve account information for the specified task failed; therefore, the task did not run. Either an error occurred, or no account information existed for the task.
The specific error is:
0x8004130f: No account information could be found in the Task Scheduler security database for the task indicated."
Run Code Online (Sandbox Code Playgroud)
我知道可以创建一个没有帐户信息的计划任务,因为Google Updater计划任务执行此操作,并且运行正常.
我可以从网络搜索中收集到的是,Windows有一个"计划任务数据库",需要为每个任务提供凭据信息才能运行.
有谁知道如何修改此凭据数据库或任何其他方式来运行我的任务?
如何在每个月初(以及数据库启动时)运行一次的Sql Server 2005中安排存储过程?
我正在寻找一个Windows 7(开发机器)的开源/免费任务调度程序,它允许我安排任务(对Web服务的HTTP请求)每x秒运行一次.
我尝试了几个Cron克隆和Windows自己的任务计划程序,但似乎都不允许任务以少于60秒的间隔运行.我错过了什么吗?如果可能的话,我不想去编写任何自定义脚本.
我在Windows 7任务调度程序中创建了一个任务.
如何使用命令提示符运行它?
我成功地使用Spring的@Scheduled注释每几秒执行一次方法.唯一的问题是,由于这种方法,我从Hibernate和Spring获得了很多关于事务等的日志消息.
我想保持日志记录级别相同,因为我喜欢接收应用程序中其他事务的此信息.
在执行特定方法时,是否有一种方法可以暂时禁止另一个库的日志记录?
scheduled-tasks ×10
java ×3
c# ×2
windows ×2
.net ×1
command-line ×1
cron ×1
logback ×1
logging ×1
schedule ×1
scheduler ×1
scheduling ×1
servlets ×1
spring ×1
sql ×1
sql-server ×1
timer ×1
windows-7 ×1