Вы не создали работающий поток для метода OnStart.По сути, диспетчер службы вызывает OnStart
для запуска службы, и этот вызов должен завершиться примерно через 15 секунд или около того.Внутренне вы должны создать поток с циклом, который на самом деле вызывает ваш код с течением времени.Вот так:
protected CancellationTokenSource _tokenSource = null;
protected Task _thread = null;
protected override void OnStart(string[] args)
{
_tokenSource = new CancellationTokenSource();
_thread = Task.Factory.StartNew(() => DoMyServiceLogic(), TaskCreationOptions.LongRunning, _tokenSource);
}
protected override void OnStop()
{
_tokenSource.Cancel();
}
protected void DoMyServiceLogic()
{
while(!_tokenSource.Token.IsCancellationRequested)
{
// Do Stuff
}
}
Ваш сервис на самом деле не следует шаблону;Вы не делаете вещи непрерывно, и это должно быть больше консольной программой.
По сути, это потому, что ваша служба перестала что-либо делать, как только вы закончили метод OnStart
.Это похоже на то, что происходит, когда вы заканчиваете Main
в консольной программе - приложение просто закрывается.