Вызов asyncTask.Start () может быть удален при условии, что метод DoSomethingAsync () выполняет некоторые асинхронные действия.Я бы удалил цикл с Task.Delay (1000), так как он будет задерживаться на целую секунду, даже если задача будет завершена задолго до этого.Как минимум, вы могли бы просто сделать это:
var asyncTask = DoSomethingAsync();
log.Info("Started!");
await asyncTask;
log.Info("Complete!);
Если вы хотите записывать запись журнала «Все еще работает» каждую секунду, то после log.Info («Запущено») вы можете запустить таймер, который выполняет регистрацию изатем остановите его после ожидающего asyncTask;:
try
{
var asyncTask = DoSomethingAsync();
log.Info("Started!");
timerRunningLog.Start();
await asyncTask;
}
catch (Exception ex)
{
// do something with the exception... (e.g. log, throw)
}
finally
{
timerRunningLog.Stop();
log.Info("Complete!);
}
Вот несколько полезных сведений: Async / Await - лучшие практики асинхронного программирования