quartz.net - 如何获取正在执行的作业名称?

标签 quartz.net

在我的应用程序中,我有一个静态类(单例),需要使用在我的层中使用的一些环境变量进行初始化,我将其称为我的 applicationContext。这反过来又具有客户和用户上下文。

当每个作业运行时,它会根据情况修改这些客户和用户上下文。
我遇到的问题是,当 2 个作业同时触发时,它们可能会覆盖彼此的上下文,因此我需要为每个正在运行的作业保持多个用户和客户上下文,并且我需要能够通过某种方式选择正确的上下文能够看到现在的工作是什么。

是否有可能以某种方式获取有关当前执行的 Quartz.net 作业的信息?

我正在设想这样的事情,其中​​“currentQuartzJob.Name”是由组成的,并且是我缺少的部分:

public class MyContextImpl : IApplicationContext {
private Dictionary<string,subContexts> allCustomerContexts;
public string CurrentContext
{
    get { return allCustomerContexts[currentQuartzJob.Name] };
}

}

编辑:

我认为不可能做我想做的事,即能够在不了解 Quartz.Net 的类中获取执行作业的名称。

我真正需要的是一种为每项工作保留不同上下文的方法。我设法通过查看正在执行的线程的 ID 来做到这一点,因为它们似乎因每个正在运行的作业而异。

最佳答案

尝试这个:

public void Execute(IJobExecutionContext context)
{
    var yourJobName = context.JobDetail.Key.Name;
}

关于quartz.net - 如何获取正在执行的作业名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711968/

相关文章:

quartz-scheduler - 我现有工作的 getNextFireTime

c# - Quartz.Net - 更新/删除作业/触发器

c# - .Net Core 上的计划任务

C#帮助使用 quartz 实时配置间隔

nhibernate - Quartz.NET, NH ISession & Ninject Scope

c# - 使用 Quartz.NET 调度 Cron 作业

quartz.net - 作业构造函数抛出异常后从触发器错误状态中恢复?

c# - Quartz.net:FireAtTime 似乎没有按预期工作

c# - asp.net 网站中的 Quartz.net 设置

c# - 如何使用 JobChainingJobListener Quartz.net 链接 2 个以上的作业?