c# - DownloadFileAsync 与 DownloadFileTaskAsync

标签 c# async-await task webclient

  1. DownloadFileAsyncDownloadFileTaskAsync 有什么区别?

  2. 什么时候应该使用一个而不是另一个?任何例子将不胜感激。

最佳答案

一般模式 - 如果您发现两个名称以 xxxAsync 结尾的方法和 xxxTaskAsync , 那么你通常应该更喜欢 Task版本。

这两个版本将存在,因为 xxxAsync版本创建于 Task-based Async Pattern 之前(TAP) 被引入,并将基于旧的异步模式。

在引入 TAP 方法时,通常的建议是在名称后缀 Async - 但是当已经有另一个具有相同名称的方法1 时无法完成 - 因此建议使用 TaskAsync 作为后缀.

在这个具体案例中 DownloadFileAsync"Event-based Async Pattern" 的一个实现(EAP),使用起来往往更尴尬。该模式本身取代了 .NET Framework 中基于匹配 Begin 的原始异步模式。和 End前缀方法和 IAsyncResult , Async Programming Model


1一般来说,当然可以引入多个同名的方法,只要它们有不同的签名即可。但是当谈到异步模式时,EAP 异步方法和 TAP 异步方法通常采用相同的参数——它们只是返回类型不同。即使他们的论点确实有所不同,将这两种模式置于完全相同的名称下也可能会造成更多困惑。

关于c# - DownloadFileAsync 与 DownloadFileTaskAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722757/

相关文章:

c# - 连接两个列表时如何处理重复的键?

c# - XML 命名空间别名不可知的 .NET XML 读取器/解析

c# - 从 Azman 获取属于角色的任务列表

c# - 如何在 C# 中将特定类型的列表转换为泛型类型的列表

sql-server - Async/Await 片段在以 MS-SQL-Server 为目标时发生死锁(如预期),但在以 Oracle 为目标时不会死锁(意外)

c# - 我应该在 Windows Phone 8 中将异步调用转换为同步吗?

c# - 如何修复我的 Web API 2 Controller 以使用异步任务实现可伸缩性

c# - 无法理解异步的行为,在 C# 中等待

c# - 在没有 Task.Wait() 的情况下使用 cancellationToken

c# - 具有多个联接的 LINQ to SQL 加载