首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理Quartz.NET的正确方法?

处理Quartz.NET的正确方法?
EN

Stack Overflow用户
提问于 2010-06-08 03:12:38
回答 4查看 3.6K关注 0票数 10

我在一个应用程序中使用Quartz.NET。处理Quartz.NET的正确方法是什么?

现在我只是在做

代码语言:javascript
复制
    if (_quartzScheduler != null)
    {
        _quartzScheduler = null;
    }

这就足够了吗?或者我应该在jobType类中实现dispose之类的东西吗?

赛斯

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-09 07:14:43

代码语言:javascript
复制
scheduler.Shutdown(waitForJobsToComplete: true);

当然,如果你还没有使用C# 4.0,命名参数是不起作用的:

代码语言:javascript
复制
scheduler.Shutdown(true);
票数 11
EN

Stack Overflow用户

发布于 2010-06-08 04:53:39

这不是一个完整的示例,但可能会让您走上正确的道路。我会实现类似这样的东西:

代码语言:javascript
复制
class customSchedulerClass : IDisposable
{

    private Component component = new Component();
    private bool disposed = false;

    public void scheduleSomeStuff()
    {
        //This is where you would implement the Quartz.net stuff
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SupressFinalize(this);
    }

    private void Dispose(bool disposing)
    {
        if(!this=disposed)
        {
            if(disposing)
            {
                component.dispose;
            }
        }
        disposed = true;
    }       
}

这样你就可以做一些很酷的事情了,比如使用语句:

代码语言:javascript
复制
public static void Main()
{
    using (customSchedulerClass myScheduler = new customSchedulerClass())
    {
        c.scheduleSomeStuff();
    }
    console.WriteLine("Now that you're out of the using statement the resources have been disposed");
}

因此,基本上,通过在继承IDisposable功能的同时实现代码,您可以使用using语句,当您完成时,它将干净地处置您的资源,并保持良好和干净。(免责声明,这不是一个完整的例子,只是为了让你在正确的方向上)。

票数 1
EN

Stack Overflow用户

发布于 2010-06-08 03:19:16

文档中没有提到任何关于IScheduler实现IDisposable的内容。如果您具有获取和持有资源(文件锁、数据库连接)自定义作业类型,则可以在对象上实现IDispoable并覆盖Dispose()以释放资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2992365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档