对HttpClient使用GetStringAsync和GetString有什么缺点?

时间:2018-10-01 18:02:12

标签: c#

此问题与整个“异步等待”实现有关。 我会保持简单。 示例:

Time_value_sec

是否有任何理由使用client.GetString()?

为什么不仅仅将GetStringAsync命名为GetString,并摆脱非异步GetString?并完全摆脱异步等待关键字?

我阅读了很多帖子,但没有找到明确的简单解释。

为什么要创建这么多重复的方法,这有什么意义?只是感觉不对。请给我一个为什么使用非异步方法的理由?您是否不想长时间运行的方法使用可用的线程和CPU内核并行运行事物? (显然,它与基于Web的ajax异步操作无关)

1 个答案:

答案 0 :(得分:6)

  

为什么不仅仅将GetStringAsync命名为GetString并摆脱非异步GetString

有两个原因:

  • 这样做会破坏向后兼容性-依靠GetString返回string而不是Task<string>的程序将停止编译,并且
  • 要求使用await将使非async方法中的API难以使用-程序员需要编写其他代码来等待任务完成。 / li>

这些考虑因素中的每一项都被取消资格。

请注意,一旦使用了API,您就必须对“破坏更改”非常谨慎,即,那些依赖您的API破坏代码的更改。更改方法的返回类型以及其功能的基本部分(同步与异步)绝对是一项重大更改。