【问题标题】:Quartz.NET not triggering when certain code is in a method当某些代码在方法中时,Quartz.NET 不会触发
【发布时间】:2012-02-18 15:57:52
【问题描述】:

我正在尝试在 Azure 辅助角色中设置 Quartz.NET 以安排日常活动。经过多次试验和错误,我发现在目标方法中包含一行代码导致事件根本没有被触发

Quartz.NET example 的基础上,我有一个 IJob 类,该类被覆盖的 Execute 方法(向调度程序和触发器注册)。

当有问题的行(注释)被删除时,我可以在 Trace.WriteLine 语句上打断点。有了它,断点将永远不会被命中,并且输出不会出现在其他地方。

代码:

public class MyUpdaterJob : IJob
{
    public MyUpdaterJob()
    {
    }

    public void Execute(JobExecutionContext context)
    {
        Trace.WriteLine("-- Yay - Job called");

        // Removing this line will result in the breakpoint above being able to be hit
        MyUpdateWorker updateWorker = new MyUpdateWorker();

        var logDate = context.FireTimeUtc.Value.AddHours(-1);

        // [...]
    }
}

对于它可能正在评估的内容会导致它不触发此事件,我感到非常茫然。有什么建议吗?

  • “MyUpdateWorker”在另一个库中
  • 当前作为 Azure 辅助角色运行

【问题讨论】:

    标签: c# azure quartz.net azure-worker-roles


    【解决方案1】:

    我想我会检查您的 MyUpdateWorker() 类的构造函数,看看是否一切正常,也许在诊断日志中有一个日志,看看您是否可以在其中指出原因。通常我会看到 Azure 上缺少库的问题,因此可能缺少依赖项。

    只需检查几件事(今天早上只喝了两杯咖啡,所以我还在热身)

    【讨论】:

      【解决方案2】:

      哇——这很奇怪。

      由于这个项目的“有机”增长,包含 IJob 实现的库以前是一个控制台应用程序,几周前我将输出切换到“类库”。

      平台目标设置为(任何只有可用的)x86。其他所有内容都编译为“任何 CPU”,可能是 64 位。

      我记得我必须手动编辑 .csproj 文件来更新它,但是一旦将以前的控制台项目现在库设置为任何 CPU,它现在就会正确触发!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-02
        • 2016-11-09
        • 2017-02-27
        • 2022-11-17
        • 1970-01-01
        相关资源
        最近更新 更多