Мне интересно, есть ли способ сообщить о ходе WebClient без использования EAP (Асинхронный шаблон на основе событий). Старый способ (с использованием EAP) будет:Отчет о ходе выполнения WebClient с использованием TAP
var client = new WebClient();
client.DownloadProgressChanged += (s,e) => { //progress reporting }
client.DownloadFileCompleted += (s,e) => { Console.Write("download finished" }
client.DownloadFileAsync(file);
с асинхронным/ОЖИДАНИЕ это можно записать в виде:
var client = new WebClient();
client.DownloadProgressChanged += (s,e) => { //progress reporting }
await client.DownloadFileTaskAsync(file);
Console.Write("downlaod finished");
Но во втором примере я использую как EAP и TAP (Асинхронный шаблон на основе задач). Не смешивает два шаблона асинхронности, считающихся плохой практикой?
Есть ли способ достичь этого без использования EAP? Я прочитал о Интерфейс IProgress, но я думаю, что нет возможности использовать его для отчета о прогрессе WebClient.