Какова разница DownloadFileAsync и DownloadFileTaskAsync?DownloadFileAsync против DownloadFileTaskAsync
Когда я должен использовать один вместо другого? Любой пример будет оценен по достоинству.
ответ
Общая картина - если вы найдете два метода с именами, заканчивающимися xxxAsync
и xxxTaskAsync
, то вы должны как правило, предпочитают версию Task
.
Эти две версии будут существовать, потому что версия xxxAsync
была создана до появления Task-based Async Pattern (TAP) и будет основана на более раннем асинхронном шаблоне.
При внедрении методов TAP, обычная рекомендация является суффикс имени с Async
- но это не может быть сделано, когда есть уже другой метод, который имеет то же имя - да, то эта рекомендация является суффикс с TaskAsync
.
В данном конкретном случае DownloadFileAsync
представляет собой реализацию "Event-based Async Pattern", которая, как правило, более неудобна для работы. Эта модель, сам по себе, вытеснила оригинальный шаблон асинхронного в рамках .NET Framework, который был основан на сопоставление Begin
и End
префиксов методы и IAsyncResult
, тем Async Programming Model
В общем, конечно, вы можете ввести несколько методов с тем же именем, если они имеют разные подписи. Но когда дело доходит до асинхронных шаблонов, метод async EAP и метод async TAP, как правило, принимают те же аргументы - они будут отличаться только по типу возврата. Даже если бы они менялись в своих аргументах, ставить оба шаблона под одним и тем же именем, вероятно, вызывало бы большую путаницу.
.. и для 'DownloadFileAsync' вам нужно добавить обработчик событий в событие' DownloadFileCompleted', чтобы узнать, когда он будет завершен, а не просто ждать задания, возвращенного 'DownloadFileTaskAsync' – stuartd