如何在C#.NET中编写调度程序应用程序?
答案 0 :(得分:4)
您也可以尝试Quartz.Net。
答案 1 :(得分:0)
这完全取决于您的要求:
如果您有权访问数据库,则可以使用表作为队列和服务定期轮询队列。
如果您的应用程序仅为客户端(CLI),则可以使用系统调度程序(“计划任务”)。
最后,如果您的应用程序仅在数据库中(例如,使用SQL Server 2005中的CLR),那么您可以创建一个SQL Server作业来安排它。
答案 2 :(得分:0)
假设您正在编写某个需要在特定时钟时间执行操作的系统,以下内容将涵盖提升事件的基本任务。
为要调度的每个事件创建一个System.Timer(包装在包含事件参数的对象中)。通过计算事件应该发生的毫秒来设置计时器。 EG:
// Set event to occur on October 1st, 2008 at 12:30pm.
DateTime eventStarts = new DateTime(2008,10,1,12,30,00);
Timer timer = new Timer((eventStarts - DateTime.Now).TotalMilliseconds);
由于你没有详细说明,其余部分将取决于你;处理timer.Elapsed事件以执行您想要的操作,并将应用程序编写为Windows服务或独立或其他任何内容。
答案 3 :(得分:0)
写一个Windows服务,关于你需要做什么才能使它可以安装等,有很好的help topics on MSDN。
接下来,为您的项目添加一个计时器。 不一个Winforms计时器,那些在Windows服务中不起作用。当事件不发生时你会注意到这一点。弄清楚你所需的计时器分辨率是什么 - 换句话说,如果你有一些东西计划在午夜开始,如果它在午夜和凌晨12:15之间的某个时间开始,它会好吗?在制作中,你会将你的计时器设置为每隔X分钟发射一次,其中X是你能负担得起的。
最后,当我这样做时,我使用一个Switch语句和一个枚举来创建一个状态机,其状态如“Starting”,“Fatal Error”,“Timer Elapsed / scan for work to do”和“Working” ”。 (我将上面的X除以2,因为实际上需要两个X才能正常工作。)
这可能不是最好的方式,但我现在已经这样做了几次,它对我有用。
答案 4 :(得分:0)
您可以尝试使用Windows Task Scheduler API
答案 5 :(得分:-1)
您还可以使用计时器控件让程序触发您想要每X刻度的事件,甚至只需一个。最好的解决方案实际上取决于你要完成的任务。