Здравствуйте, у меня есть служба 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
?