Мне нужно написать некоторый асинхронный код, который по существу пытается повторно поговорить и инициализировать базу данных. Довольно часто первая попытка не срабатывает, поэтому требуется повторить попытку.
В старые добрые времена я бы использовал шаблон, похожий на:
void WaitForItToWork()
{
bool succeeded = false;
while (!succeeded)
{
// do work
succeeded = outcome; // if it worked, mark as succeeded, else retry
Threading.Thread.Sleep(1000); // arbitrary sleep
}
}
Я понимаю, что в последнее время в .NET были внесены большие изменения в отношении асинхронных шаблонов, поэтому мой вопрос действительно является лучшим методом для использования или стоит изучить материал async
, и если да, то каким образом я могу реализовать этот шаблон в async
?
Обновление
Чтобы уточнить, я хочу асинхронно генерировать эту работу, чтобы метод, который порождает ее, не должен ждать завершения ее, поскольку она будет порождена в конструкторе службы, поэтому конструктор должен немедленно вернуться.