如何获得执行工作的名字?

ds9*_*ove 7 quartz.net

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

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

有可能以某种方式获取有关当前正在执行的quartz.net工作的信息吗?

我正在设想这样的东西,其中"currentQuartzJob.Name"组成并且是我缺少的部分:

public class MyContextImpl : IApplicationContext {
private Dictionary<string,subContexts> allCustomerContexts;
public string CurrentContext
{
    get { return allCustomerContexts[currentQuartzJob.Name] };
}
Run Code Online (Sandbox Code Playgroud)

}

编辑:

我认为不可能做我想做的事,那就是能够在一个不了解Quartz.Net的类中获得执行作业的名称.

我真正需要的是为每项工作保留不同背景的方法.我设法通过查看执行线程的ID来实现这一点,因为它们似乎对于每个正在运行的作业都不同.

And*_*kov 15

试试这个:

public void Execute(IJobExecutionContext context)
{
    var yourJobName = context.JobDetail.Key.Name;
}
Run Code Online (Sandbox Code Playgroud)


war*_*man 1

我不完全确定您正在使用应用程序做什么,但我会说当前正在执行的作业的名称在作业执行期间肯定可用。

IJob Execute() 方法内部:

// implementation in IJob
public void Execute(JobExecutionContext context)
{
   // get name here
   string jobName = context.JobDetail.Name;

}
Run Code Online (Sandbox Code Playgroud)

这就是您要找的吗?