Компромиссы использования Task Wait против Thread.Sleep в синхронном методе winservice - PullRequest
0 голосов
/ 20 сентября 2019

Здравствуйте, у меня есть служба Windows, в которой я запускаю непрерывный цикл.Я не хочу, чтобы этот цикл работал с максимальной скоростью ядра.
Я хочу иметь возможность приостанавливать его на фиксированное время между каждой итерацией.
Я хочу, чтобы мой сервис был максимально легким и дружественным к ресурсам, насколько это возможно..
Так как метод synchronous, я не знаю, должен ли я использовать Task.Delay.Wait или Thread.Sleep.

Что было бы подходящим / более безопасным методом?

public MyService:ServiceBase
{   
    MyService(int interval)
    {
      this.SleepInterval=interval;
    }
    private readonly int SleepInterval{get;set;}
    private Task LoopTask;

    public override OnStart()
    {
       this.LoopTask=Task.Run(Loop);
    }
    public void Loop()
    {
        while(true)
        {
           //do stuff
           Thread.Sleep(this.SleepInterval);
           //or should i do 
           Task.Delay(this.SleepInterval).Wait();
        }

    }

}

PS : Как вы можете видеть, мой Loop уже работает на отдельном Task. Могу ли я лучше использовать вариант TPL?

...