我在应用程序中使用Quartz.NET。什么是处理Quartz.NET的正确方法。正确的方式来处理Quartz.NET?
现在我只是做
if (_quartzScheduler != null)
{
_quartzScheduler = null;
}
这就够了,或者我应该落实在jobType类处置或东西吗?
赛斯
我在应用程序中使用Quartz.NET。什么是处理Quartz.NET的正确方法。正确的方式来处理Quartz.NET?
现在我只是做
if (_quartzScheduler != null)
{
_quartzScheduler = null;
}
这就够了,或者我应该落实在jobType类处置或东西吗?
赛斯
scheduler.Shutdown(waitForJobsToComplete: true);
当然,如果你不是在C#4.0然而,命名参数不起作用:
scheduler.Shutdown(true);
的文档不说的IScheduler实现IDisposable的事情。如果您有自定义作业类型来抓取和保存资源(文件锁定,数据库连接),则可以在对象上实现IDispoable并覆盖Dispose()以释放资源。
这不是一个完整的例子,但可能会让你走上正确的道路。我想实现这样的:通过实现你的代码,而继承的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
声明,当你完成它将干净地处理你的资源,并保持干净和漂亮的事情。 (免责声明,这不是一个完整的例子,只是为了让你在正确的方向)。
通常我们不需要将对象设置为null以便将其丢弃。 如果一个对象包含非托管资源,那么它应该实现IDisposable(并由其所有客户端调用)。
您可以参考this类似的帖子。
设置为NULL没有任何用处的.NET。 – 2010-06-07 19:20:25
与处理对象无关 – 2010-06-07 19:23:57
btw ...不需要检查_quartzScheduler为null,只需设置它...最终结果相同并且代码更清晰 – MaLio 2010-06-10 20:09:23