在我工作的公司里,我面临着.NET/C#异步/等待特性中有关不返回任何(空)的方法的问题。
项目指导原则认为,应该始终使用异步/等待,但在某些情况下,我需要使用无效方法,而异步/等待似乎不能很好地处理这类方法。
例如,如果我采用命令/查询模式,即导致状态更改的方法不应该返回任何内容,那么只返回(不改变状态)的查询。
我有什么选择?我不想放弃编程模式,仅仅是因为某些语言特性(比如异步/等待)似乎不适用于void方法。
异步/异步x空方法最有问题的地方是,异常在异步上下文中被丢弃。
发布于 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或处理器约束计算”。无缘无故地使程序中的每一种方法都是异步的,听起来就像一团糟。异步是为了驯服延迟;如果您在延迟方面没有问题,那么就不要使用它。
https://stackoverflow.com/questions/37602261
复制相似问题