Измените сигнатуру SendHeartBeatToAzure
, чтобы получить Task
, чтобы ее можно было ожидать:
private async Task SendHeartBeatToAzure()
Затем await
задача, возвращенная методом внутри l oop , Для достижения стабильного и последовательного пульса рекомендуется создать задачу Task.Delay
перед вызовом метода:
Task.Run(async () =>
{
while (true)
{
var delayTask = Task.Delay(timeSpan, _cancellationToken);
await SendHeartBeatToAzure();
await delayTask;
}
});
В качестве примечания, вы, вероятно, должны хранить задачу, возвращаемую Task.Run
как свойство только для чтения класса HeartBeatService
, чтобы можно было отслеживать состояние задачи.