ISupportGracefulStop - интерфейс

Дополнительный интерфейс плагина, поддерживающего вежливую остановку. Плагин, реализующий данный интерфейс, должен также реализовывать IPlugin.

Definition

Пространство имён: Chronos.Contracts
Сборка: Chronos.Contracts (в Chronos.Contracts.dll) Версия: 3.6.0.22
C#
public interface ISupportGracefulStop

Заметки

Вежливая остановка может происходить при остановке хоста, запущенного как сервис Windows, или при вводе команды остановки в хосте, запущенном в консоли (при закрытии окна консоли или при завершении процесса хоста через диспетчер вежливой остановки не производится). При этом все запущенные плагины имеют некоторое время, определяемое настройками хоста (порядка 30 секунд), для того, чтобы корректно завершить свою работу. Если метод StopAsync(IGracefulStopToken) не успел выполнить все действия за заданное время, то процесс плагина будет принудительно остановлен.

Если хост управляет хотя бы одним плагином, реализующим интерфейс ISupportGracefulStop, то это вызывает небольшие накладные расходы в процессе хоста. Накладные расходы в процессе плагина происходят только в том случае, если плагин реализует интерфейс ISupportGracefulStop. Следовательно, если плагин может быть безопасно остановлен в любой момент времени завершением процесса, то не следует реализовывать для него этот интерфейс.

Методы

StopAsync Метод, вызываемый хостом при вежливой остановке плагина. Он должен максимально быстро завершить выполнение плагина, но не завершать свою работу до тех пор, пока потоки, с которыми работает плагин, не будут завершены.

См. также