2

我已经分配了一个任务来创建一个电子邮件 C# 控制台应用程序,该应用程序旨在作为批处理运行。我对 C# 领域很陌生,因此我不知道我的方向。此 C# 控制台应用程序将部署在服务器上,并期望根据服务器时间在特定时间运行。

经过一些研究,大多数建议都是关于使用任务调度程序或窗口服务,但我想知道这个 C# 控制台应用程序是否可以以某种方式运行自己的?也许在执行它之后,它会将自己注册到服务器中,服务器会定期处理它?

4

2 回答 2

4

如果您想通过代码管理调度程序,请查看Quartz.NET:http://quartznet.sourceforge.net/

该库提供作业和触发器的创建。

例如(直接来自:http: //quartznet.sourceforge.net/tutorial/lesson_3.html):

// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();

// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(DumbJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);

现在这意味着您的控制台应用程序应该连续运行,这使得它不适合这项工作。

选项 1. 通过执行控制台应用程序的任务调度程序(非常简单)添加任务。请参阅示例任务:http ://www.sevenforums.com/tutorials/12444-task-scheduler-create-new-task.html

选项 2. 创建一个 Windows 服务(不复杂),它使用 Quartz.NET 或 .NET 的Timer类等库来安排作业并执行批处理操作。请参阅创建 Windows 服务http://msdn.microsoft.com/en-us/library/zt39148a.aspx

选项 3. 让您的控制台应用程序实现一个调度库,如 Quartz.NET 或 /Net 的Timer类,并将其作为服务运行(稍微复杂一点):从可执行文件创建 Windows 服务

于 2013-09-11T11:50:17.760 回答
2

只要它不需要用户输入,它就可以自己运行。例如,您可以安排程序在 Windows 任务计划程序中运行。

于 2013-09-11T11:06:53.437 回答