Я использую Quartz.NET в приложении. Что надлежащий путь состоит в том, чтобы избавиться от Quartz.NET.
Прямо сейчас я просто делаю
if (_quartzScheduler != null)
{
_quartzScheduler = null;
}
Это достаточно, или я должен реализовать расположение или что-то в jobType классе?
Seth
scheduler.Shutdown(waitForJobsToComplete: true);
Конечно, если вы еще не используете C # 4.0, именованные параметры не работают:
scheduler.Shutdown(true);
В документации ничего не говорится о IScheduler, реализующем IDisposable. Если у вас есть настраиваемые типы заданий, которые захватывают и удерживают ресурсы (блокировки файлов, соединения с базой данных), вы можете реализовать IDispoable и переопределить Dispose () в своем объекте, чтобы освободить ресурсы.
Это не полный пример, но он может натолкнуть вас на правильный путь. Я бы реализовал что-то вроде этого:
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:
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
, и когда вы закончите, он чисто утилизирует ваши ресурсы и сохранит все в порядке. (Оговорка, это опять же не полный пример, просто чтобы направить вас в правильном направлении).
Как правило, нам не нужно устанавливать для объекта значение null, чтобы удалить его. Если объект содержит неуправляемые ресурсы, он должен реализовать IDisposable (и вызываться всеми его клиентами).
Вы можете сослаться на этот похожий пост.