计划一个C#控制台应用程序

计划一个C#控制台应用程序,c#,scheduled-tasks,console-application,C#,Scheduled Tasks,Console Application,我给了一个任务,创建一个电子邮件C#控制台应用程序,目标是批量运行。我对C#区很陌生,因此我不知道自己的方向。此C#控制台应用程序将部署在服务器上,并根据服务器时间在特定时间内运行 经过一些研究,大多数建议都是关于使用任务调度器或窗口服务的,但我想知道这个C#console应用程序是否可以自己运行?也许在执行之后,它会将自己注册到服务器中,服务器会定期处理它?只要它不需要用户输入,它就可以自己运行。例如,您可以安排程序在Windows任务计划程序中运行。如果您想通过代码管理计划程序,请查看Qua

我给了一个任务,创建一个电子邮件C#控制台应用程序,目标是批量运行。我对C#区很陌生,因此我不知道自己的方向。此C#控制台应用程序将部署在服务器上,并根据服务器时间在特定时间内运行


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

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

如果您想通过代码管理计划程序,请查看Quartz.NET:

此库提供了作业和触发器的创建

e、 g.(直接从:):

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

备选案文1。通过执行控制台应用程序的任务调度器(real easy)添加任务。请参阅示例任务:

备选案文2。创建一个windows服务(不太复杂),它使用Quartz.NET或.NET类之类的库来安排作业并执行批处理操作。有关创建windows服务的详细信息,请参阅


备选案文3。让您的控制台应用程序实现一个scheduele库,如Quartz.NET或/NET的类,并将其作为服务运行(稍微复杂一些):

此控制台应用程序有点棘手,它应该有两个选项,每天和每年一次,并相应地执行代码。这意味着它需要Windows任务计划程序实际传入参数?这可能吗?@IsaacLem,当然,你自己试过了吗?创建任务时,可以使用
添加参数
框。或者,为什么不使用某种类型的配置文件呢?是的,任务调度器可以将固定参数作为命令行属性传递。如果我理解正确,您将有一个任务,应该每年运行一次?然后每年调用yourapp.exe为此创建一个任务。然后是另一个for daily,它被另一个参数调用。@Arran:是的,我看到它添加了参数,我想知道我的C#console应用程序是如何读取参数的?@IsaacLem,你知道程序中的
Main
方法吗?它默认接受名为
args
的参数。此字符串数组将包含您传入的参数。这完全取决于你阅读它们并根据你得到的东西做些什么。
// 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);