此问题与整个“异步等待”实现有关。 我会保持简单。 示例:
Time_value_sec
是否有任何理由使用client.GetString()?
为什么不仅仅将GetStringAsync命名为GetString,并摆脱非异步GetString?并完全摆脱异步等待关键字?
我阅读了很多帖子,但没有找到明确的简单解释。
为什么要创建这么多重复的方法,这有什么意义?只是感觉不对。请给我一个为什么使用非异步方法的理由?您是否不想长时间运行的方法使用可用的线程和CPU内核并行运行事物? (显然,它与基于Web的ajax异步操作无关)
答案 0 :(得分:6)
为什么不仅仅将
GetStringAsync
命名为GetString
并摆脱非异步GetString
?
有两个原因:
GetString
返回string
而不是Task<string>
的程序将停止编译,并且await
将使非async
方法中的API难以使用-程序员需要编写其他代码来等待任务完成。 / li>
这些考虑因素中的每一项都被取消资格。
请注意,一旦使用了API,您就必须对“破坏更改”非常谨慎,即,那些依赖您的API破坏代码的更改。更改方法的返回类型以及其功能的基本部分(同步与异步)绝对是一项重大更改。