我在一个应用程序中使用Quartz.NET。处理Quartz.NET的正确方法是什么?
现在我只是在做
if (_quartzScheduler != null)
{
_quartzScheduler = null;
}这就足够了吗?或者我应该在jobType类中实现dispose之类的东西吗?
赛斯
发布于 2010-06-09 07:14:43
scheduler.Shutdown(waitForJobsToComplete: true);当然,如果你还没有使用C# 4.0,命名参数是不起作用的:
scheduler.Shutdown(true);发布于 2010-06-08 04:53:39
这不是一个完整的示例,但可能会让您走上正确的道路。我会实现类似这样的东西:
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;
}
}这样你就可以做一些很酷的事情了,比如使用语句:
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语句,当您完成时,它将干净地处置您的资源,并保持良好和干净。(免责声明,这不是一个完整的例子,只是为了让你在正确的方向上)。
发布于 2010-06-08 03:19:16
文档中没有提到任何关于IScheduler实现IDisposable的内容。如果您具有获取和持有资源(文件锁、数据库连接)自定义作业类型,则可以在对象上实现IDispoable并覆盖Dispose()以释放资源。
https://stackoverflow.com/questions/2992365
复制相似问题