Как открыть html файл через C# код?
web.DownloadFileAsync(uri, "thr.html");
А кто авейтить асинхронные вызовы будет?

ЗЫ:
File.Copy(@"C:\Users\zm096\Downloads\index (2).html", "thr.html");
Puj, Async в конце названия метода значит "асинхронный". 
Происходит так: 
web.DownloadFileAsync(uri, "thr.html");
Задача запускается в новом параллельном потоке, а управление возвращается в вызывающий метод.
Дальше у вас происходит выход из блока using, который "под капотом" вызывает метод Dispose() у веб-клиента.
Сборщик мусора утилизирует веб-клиента и файл, скорее всего, не скачивается.
Что делать:
1. Прочитать, как работает модель TAP (Task Await Pattern).
2. Понимать, что необходимо ожидать await завершения асинхронного метода
3. Если файлик скачать нужно только один и он небольшого размера, заменить DownloadFileAsync просто на DownloadFile. Ценой нескольких миллисекунд блокировки основного интерфейса