2017-01-18 6 views

ответ

6

Общая картина - если вы найдете два метода с именами, заканчивающимися 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, как правило, принимают те же аргументы - они будут отличаться только по типу возврата. Даже если бы они менялись в своих аргументах, ставить оба шаблона под одним и тем же именем, вероятно, вызывало бы большую путаницу.

+1

.. и для 'DownloadFileAsync' вам нужно добавить обработчик событий в событие' DownloadFileCompleted', чтобы узнать, когда он будет завершен, а не просто ждать задания, возвращенного 'DownloadFileTaskAsync' – stuartd