Надлежащий способ избавиться от Quartz.NET?

Я использую Quartz.NET в приложении. Что надлежащий путь состоит в том, чтобы избавиться от Quartz.NET.

Прямо сейчас я просто делаю

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

Это достаточно, или я должен реализовать расположение или что-то в jobType классе?

Seth

10
задан Seth Spearman 7 June 2010 в 19:12
поделиться

4 ответа

scheduler.Shutdown(waitForJobsToComplete: true);

Конечно, если вы еще не используете C # 4.0, именованные параметры не работают:

scheduler.Shutdown(true);
11
ответ дан 4 December 2019 в 00:23
поделиться

В документации ничего не говорится о IScheduler, реализующем IDisposable. Если у вас есть настраиваемые типы заданий, которые захватывают и удерживают ресурсы (блокировки файлов, соединения с базой данных), вы можете реализовать IDispoable и переопределить Dispose () в своем объекте, чтобы освободить ресурсы.

0
ответ дан 4 December 2019 в 00:23
поделиться

Это не полный пример, но он может натолкнуть вас на правильный путь. Я бы реализовал что-то вроде этого:

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, и когда вы закончите, он чисто утилизирует ваши ресурсы и сохранит все в порядке. (Оговорка, это опять же не полный пример, просто чтобы направить вас в правильном направлении).

1
ответ дан 4 December 2019 в 00:23
поделиться

Как правило, нам не нужно устанавливать для объекта значение null, чтобы удалить его. Если объект содержит неуправляемые ресурсы, он должен реализовать IDisposable (и вызываться всеми его клиентами).

Вы можете сослаться на этот похожий пост.

0
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: