我正在使用从NuGet,.NET Framework v4.5下载并使用C#的Quartz v2.2.3.400。我有几个从IJob
继承的作业,并使用传递给IJobExecutionContext
方法的Execute()
对象。那些工作得很好。我还创建了一个继承自IJobListener
的全局作业监听器,它记录了每个被执行的作业,再次利用IJobExecutionContext
,JobToBeExecuted()
和JobExecutionVetoed()
传递的JobWasExecuted()
方法。
现在提出我的问题。我还有一些作业扫描目录中的新文件,这些文件继承自IDirectoryScanListener
。此接口定义方法签名void FilesUpdatedOrAdded(IEnumerable<FileInfo> updatedFiles);
,它提供自上次轮询以来该目录中任何新文件的文件信息。那样太好了!但是,我似乎无法找到访问此作业IJobExecutionContext
,调度程序等的方法。我想查看作业上下文的一些属性并将数据添加到数据映射中,但是我没有IJobExecutionContext
被曝光。有没有办法可以访问继承自IDirectoryScanListener
的类?
谢谢!
答案 0 :(得分:1)
您无法真正从实现IDirectoryScanListener接口的类访问调度程序。该接口仅定义此方法:
public interface IDirectoryScanListener
{
///<param name="updatedFiles">An array of <see cref="FileInfo"/> objects that were updated/added
///since the last scan of the directory</param>
void FilesUpdatedOrAdded(IEnumerable<FileInfo> updatedFiles);
}
您可以创建自己的作业,继承自DirectoryScanJob。然后你就可以访问上下文了。它不应该是太多的工作。完成后,只需将上下文传递给基类。像这样:
public class MyDirectoryScanJob:DirectoryScanJob
{
new public void Execute(IJobExecutionContext context)
{
// You can access the context here
base.Execute(context);
}
}