2010-06-07 139 views
9

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

现在我只是做

if (_quartzScheduler != null) 
    { 
     _quartzScheduler = null; 
    } 

这就够了,或者我应该落实在jobType类处置或东西吗?

赛斯

+4

设置为NULL没有任何用处的.NET。 – 2010-06-07 19:20:25

+0

与处理对象无关 – 2010-06-07 19:23:57

+0

btw ...不需要检查_quartzScheduler为null,只需设置它...最终结果相同并且代码更清晰 – MaLio 2010-06-10 20:09:23

回答

11
scheduler.Shutdown(waitForJobsToComplete: true); 

当然,如果你不是在C#4.0然而,命名参数不起作用:

scheduler.Shutdown(true); 
0

的文档不说的IScheduler实现IDisposable的事情。如果您有自定义作业类型来抓取和保存资源(文件锁定,数据库连接),则可以在对象上实现IDispoable并覆盖Dispose()以释放资源。

1

这不是一个完整的例子,但可能会让你走上正确的道路。我想实现这样的:通过实现你的代码,而继承的IDisposable的功能,你可以再我们

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"); 
} 

所以基本上:

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; 
    }  
} 
这个

然后你就可以做使用之类的语句很酷的东西using声明,当你完成它将干净地处理你的资源,并保持干净和漂亮的事情。 (免责声明,这不是一个完整的例子,只是为了让你在正确的方向)。

0

通常我们不需要将对象设置为null以便将其丢弃。 如果一个对象包含非托管资源,那么它应该实现IDisposable(并由其所有客户端调用)。

您可以参考this类似的帖子。

相关问题