【问题标题】:Start process with QUARTZ.NET使用 QUARTZ.NET 启动进程
【发布时间】:2018-07-25 08:21:03
【问题描述】:

这是我的.NET 控制台应用程序program.cs 类中的方法

public static void Run()
    {

        var isRunning = false;
        IServiceCollection services = new ServiceCollection();
        Startup startup = new Startup();
        var serviceProvider = startup.ConfigureServices(services);
        IWindsorContainer _container = 
        DateTime thisDay = DateTime.Today;
        while (true)
        {
            if (!isRunning)
            {
                isRunning = true;
                var configuration = _container.Resolve<IConfigurationRoot>();
                var _process = _container.Resolve<Process.Process>();
                var cron = (configuration[Enums.ExecutionTime]);

                if (thisDay == DateTime.Now)
                {
                    try
                    {

                        _process.MainProcess();

                    }
                    catch (Exception ex)
                    {
                    }
                    finally
                    {
                        isRunning = false;
                        Thread.Sleep(secondsForSleep);
                        _container.Release(_process);
                    }
                }
            }
        }
    }

我想使用quartz.net 启动_process.MainProcess() 但是,我能找到的所有示例都是以 Jobs 开头的,有人知道它是否支持启动过程或有解决方法吗?

【问题讨论】:

  • 在旁注中,if (thisDay == DateTime.Now) 只会在午夜准确,这真的是预期的行为吗?
  • 如果我发现如何使用quartz.net 开始进程,我不会离开这里

标签: c# process cron quartz-scheduler quartz.net


【解决方案1】:

您只需实现IJob 接口并让作业运行进程:

[DisallowConcurrentExecution]
public class MyProcessJob : IJob
{     
    private readonly Process _process;

    public MyProcessJob(Process process)
    {
        _process = process;
    }

    public void Execute(IJobExecutionContext context)
    {
        _process.MainProcess();
    }
}

Quartz.NET quick start guide 很好地解释了作业创建和调度。

【讨论】:

    最近更新 更多