Метод Delay в Task - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем. В общем отправляю я запрос с помощью таск. И все работает, только иногда ответ от сервера не приходит, и поэтому метод бесконечно ждет ответа. А нужно его отправить на следующую итерацию цикла, даже если ответ от сервера не пришел. Подсказали, что можно сделать с помощью Task.Delay, но не знаю как. Подскажите пожалуйста, вот код:
public async Task<XmlDocument> SendMore(string asd, string dsa, string message)
        {
            XmlDocument result;
            string command = "метод";
            postingStatus = "Формирую параметры";
            System.Threading.Thread.Sleep(500);
            NameValueCollection parameters = new NameValueCollection();
            parameters["d_s_a"] = dsa;
            parameters["a_s_d"] = asd;
            parameters["message"] = message;
            postingStatus = "Ожидаю ответ";
            System.Threading.Thread.Sleep(500);
            LOG.Enqueue("Выполняю");
            result = await ExecuteCommand(command, parameters);
            postingStatus = "Запрос выполнен";
            System.Threading.Thread.Sleep(500);
            return result;
        }

Решение задачи: «Метод Delay в Task»

textual
Листинг программы
public static class TaskExtensions
    {
        public static async Task<T> TimeoutAfter<T>(this Task<T> task, int millisecondsTimeout)
        {
            if (task == await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))
                return task.Result;
            throw new TimeoutException();
        }
        public static async Task TimeoutAfter(this Task task, int millisecondsTimeout)
        {
            if (task != await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))
               throw new TimeoutException();
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5