首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步/等待和开发实践

异步/等待和开发实践
EN

Stack Overflow用户
提问于 2016-06-02 21:16:42
回答 1查看 326关注 0票数 0

在我工作的公司里,我面临着.NET/C#异步/等待特性中有关不返回任何(空)的方法的问题。

项目指导原则认为,应该始终使用异步/等待,但在某些情况下,我需要使用无效方法,而异步/等待似乎不能很好地处理这类方法。

例如,如果我采用命令/查询模式,即导致状态更改的方法不应该返回任何内容,那么只返回(不改变状态)的查询。

我有什么选择?我不想放弃编程模式,仅仅是因为某些语言特性(比如异步/等待)似乎不适用于void方法。

异步/异步x空方法最有问题的地方是,异常在异步上下文中被丢弃。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-02 21:25:32

返回int的方法的异步等价是返回Task<int>的方法。返回void的方法的异步等价是返回Task的方法。因此,您应该使异步"void“方法返回Task。小菜一碟!

例如,如果我采用命令/查询模式,要求导致状态更改的方法不应该返回任何内容,那么只返回查询(不改变状态)返回值。

好的。异步等价于“导致异步状态更改的方法应该返回Task,异步计算值的方法应该返回Task<T>”。Task是执行状态更改的任务,Task<T>是计算T值的任务。

我不想放弃编程模式,仅仅是因为某些语言特性(比如异步/等待)似乎不适用于void方法。

如果您想使用异步,则必须在设计模式中始终应用异步逻辑。要求同步代码中的void的设计模式必须在异步代码中要求Task

项目指导原则认为应该始终使用异步/等待,

我衷心希望这些指导方针继续下去,“.对于所有可能需要超过30 ms的IO或处理器约束计算”。无缘无故地使程序中的每一种方法都是异步的,听起来就像一团糟。异步是为了驯服延迟;如果您在延迟方面没有问题,那么就不要使用它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37602261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档