Я загружаю строку с веб-страницы с помощью System.Net.WebClient.DownloadStringTaskAsync
асинхронно.Отмена DownloadStringTaskAsync и его перезапуск
Примерно 4 из 5 раз, это завершается успешно, но иногда это зависает, и мне придется перезапустить программу, чтобы «перезагрузить» ее.
Таким образом, я имею в виду реализации тайм-аут, который автоматически отменяет задачу через 5 секунд и перезапускает его:
async void DoTasks()
{
string output;
int timeout = 5000;
WebClient client = new WebClient() { Encoding = Encoding.UTF8 };
Task<string> task = client.DownloadStringTaskAsync(url);
if (await Task.WhenAny(task, Task.Delay(timeout)) == task)
{
output = task.Result;
}
else
{
client.CancelAsync();
DoTasks();
}
}
Это, однако, возвращает NullReferenceException
.
Невозможно, чтобы этот код мог вызвать «NullReferenceException». Вероятно, это внутри метода GetTasks. Кроме того, вы не используете «WebClient». –
Вам нужно добавить метод 'GetTasks' к вопросу. –
Извините, GetTasks должен был быть DoTasks - перезапуск метода – jacobz