Как остановить службу Topshelf на основе токена отмены в службе Fabri c? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть служба с отслеживанием состояния, которая работает под Service Fabri c с использованием Topshelf. Проблема в том, что при обновлении я получаю сообщение об ошибке, потому что служба не останавливается (RunAsyn c 'сообщила Предупреждение для свойства' RunAsyncSlowCancellation '), когда метод RunAsyn c запускает CancelationToken. Как остановить службу с помощью токена?

public static TopshelfExitCode RunServiceHost(CancellationToken token)
{
  return HostFactory.Run(x =>
  { 
      x.Service<MyService>(s =>
      {
          s.ConstructUsing(name => new MyService());
          s.WhenStarted((tc,a) => tc.Start(a));
          s.WhenStopped((tc, a) =>tc.Stop(a));
      });
  });
}

1 Ответ

0 голосов
/ 17 июня 2020

Я думаю, вы должны иметь возможность использовать HostControl a, чтобы остановить службу при отмене токена, зарегистрировав обратный вызов с использованием (CancellationToken.Register).

Обязательно включите выключение:

s.EnableShutdown();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...