Quartz.Net查看多个目录

时间:2014-02-27 19:47:39

标签: quartz.net-2.0

我正在使用Quartz.Net 2.X,根据我的理解,它正在扫描执行目录以查找IJob的实例。有没有办法定义其他目录(理想情况下是多个目录)在哪里寻找“IJobs”?

1 个答案:

答案 0 :(得分:0)

有几种方法,其中一种方法是编写自定义ITypeLoadHelper。在我的设置中,我使用AppDomain.AssemblyResolve事件来实际从我的自定义文件夹加载任何依赖项:

public class CustomFolderTypeLoadHelper : SimpleTypeLoadHelper
{
    private Dictionary<string, string> dllPaths;
    public override void Initialize()
    {
        string path = @"C:\"; // quick&dirty way
        dllPaths = new DirectoryInfo(path)
            .GetFiles("*.dll")
            .ToDictionary(fi => Path.GetFileNameWithoutExtension(fi.Name), fi => fi.FullName);

        AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
            dllPaths.ContainsKey(args.Name) ? Assembly.LoadFrom(dllPaths[args.Name]) : null;

        base.Initialize();
    }
}

然后将此行添加到quartz.config

quartz.scheduler.typeLoadHelper.type = MyNamespace.CustomFolderTypeLoadHelper, MyAssembly

或者您可以在该接口上使用方法LoadType()来执行Quartz方式。

在任何一种情况下,将带有此引导程序类的程序集放在Quartz bin文件夹中。