@martensit

Есть более простой сниппет «повторять до успеха»?

while (true)
   {
      try
      {
         File.WriteAllText(@"C:\\serv1.txt", "text");
         break;
      }
      catch (Exception)
      {
         Thread.Sleep(300);
      }
   }
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Попробуйте такой метод (нет возможности проверить). На вход поддается делегат, который необходимо выполнить.

void UntilSuccess(Action action) {
  if (action == null)
    throw new ArgumentNullException();

  while (true) {
      try
      {
         action.Invoke();
         break;
      }
      catch { Thread.Sleep(300); }
  }
}

// Использовать так:
UntilSuccess(() => File.WriteAllText(@"C:\\serv1.txt", "text"));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EreminD
@EreminD
Кое-что умею
а если в рекурсию?
типа
private void writeText(){
  try
      {
         File.WriteAllText(@"C:\\serv1.txt", "text");
      }
      catch (Exception)
      {
         Thread.Sleep(300);
         writeText();
      }
}

И просто в коде вызвать writeText();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы