2011-12-25 104 views
0

我得到了一个订阅数据库,我想为每个订阅从一次到另一个每x分钟运行一次。在一个应用程序(.Net C#)中的计划任务

但是每个订阅都有自己的时间和时间+它应该每运行x分钟应该运行哪个函数。

它可以是许多同时运行的订阅。

也许它应该看起来像一个计划任务,开始于一个特定的时间,并运行每x分钟到一个特定的时间。

我希望我能描述自己想做的事情,我的英语不是最好的。

有没有人有任何想法如何构建应用程序待办事项?

回答

1

你可能正在描述什么Quartz.NET可以为你做。检查一下,这可能值得花一些时间。

+0

测试Quartz.NET,但得到一些问题,看看你是否有任何想法:http://stackoverflow.com/questions/8639085/quartz-net-beta-throws-an-exception-when-i-try -testcode功能于自己的项目 – RickardP 2011-12-26 21:01:36

5

你有一对夫妇的选择,在这里:

  • 使用SQL Agent和设置jobs与所需的日程安排(当然,这是假设你正在使用SQL Server)。
  • 用定时器写一个Windows Service,该定时器查询数据库并根据需要执行不同的任务。

您提到了scheduled tasks,这可能是另一种选择,但这需要您自动设置新任务以及要运行的实际任务。这两个方法都比较容易处理上面列出的选项。

2

我建议你使用System.Threading.Timer。要安排工作,请执行以下操作:

new Timer(_ => DoTheJob()).Change(your_interval_in_milliseconds, Timeout.Infinite); 

然后当作业完成后,使用相同的代码安排下次运行。这会阻止同时运行同一作业的2个实例。 请让我知道如果这没有适当地回答你的问题。

0

所以你应该写一些调度器。它将从队列中取出任务并执行它们......您可以创建一个调度程序,以便例如每个任务都可以在单独的线程中运行,并且会显着提高性能!