Метод 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д