В чем причина возникновения ошибки?
Если бы это была проблема с ресурсами, например, доступ к чему-либо, например, к соединению или объекту, то вы можете посмотреть на использование мониторов, семафоров или просто блокировки.
lock (resource)
{
Dosomething(resource);
}
Таким образом, если предыдущий метод обращается к ресурсу, вы можете подождать, пока он не освободит ресурс, чтобы продолжить.
В идеале, вам не нужно запускать цикл для выполнения чего-либо каждый раз, когда это не удается. Это вообще не помогает, вы хотели бы знать о проблеме и исправить ее. Иметь петлю, чтобы всегда просто продолжать пытаться, - неправильный путь.