Тема, которая вызывает OnStart
, не является вашей, как вы хотите. На самом деле он используется для ответа на запросы Service Control Manager, направленные к вашему сервису. Ваша служба не считается запущенной, пока вы не вернете из OnStart
.
Разница между Thread.Sleep
и Task.Delay
в том, что первый блокирует текущий поток , тогда как второй (если используется с await
, а не с задержкой 0) закончится освобождением текущего потока.
Как только вы добавите async
/ await
к вашему OnStart
методу вы фактически возвращаетесь из метода в первый момент выполнения, когда код встречает await
на чем-то, что еще не закончено - на вашем await Task.Delay
.