【问题标题】:Schedule a C# console application调度 C# 控制台应用程序
【发布时间】:2013-09-15 08:55:27
【问题描述】:

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

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

【问题讨论】:

    标签: c# scheduled-tasks console-application


    【解决方案1】:

    如果您想通过代码管理调度程序,请查看 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 类并将其作为服务运行(有点复杂):Create Windows service from executable

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这个控制台应用程序有点棘手,它应该有每天和每年两个选项,以及相应执行的代码。这意味着它需要 Windows 任务计划程序来实际传递参数?这甚至可能吗?
      • @IsaacLem,当然,你自己试过了吗?创建任务时可以使用Add arguments 框。或者,为什么不使用某种配置文件?
      • 是的,任务调度程序可以将固定参数作为命令行属性传递。如果我理解正确,您将有一项任务应该每年运行一次?然后为此调用 yourapp.exe /year 创建一个任务。然后是另一个用另一个参数调用的daily。
      • @Arran:是的,我看到了添加参数,我想知道我的 C# 控制台应用程序如何读取参数?
      • @IsaacLem,你知道你程序中的Main 方法吗?它默认接受名为args 的参数。此字符串数组将包含您传入的参数。您可以阅读它们并根据您获得的内容做一些事情。
      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多