Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步/等待和开发实践_C#_Async Await - Fatal编程技术网

C# 异步/等待和开发实践

C# 异步/等待和开发实践,c#,async-await,C#,Async Await,在我工作的公司里,我面临着.NET/C#async/await特性的问题,该特性涉及不返回任何内容的方法(void) 项目指南认为应该始终使用async/await,但在某些情况下,我需要使用void方法,而async/await似乎不能与此类方法一起正常工作 例如,如果我采用命令/查询模式,即导致状态更改的方法不应返回任何内容,则返回的只是查询(不更改状态) 我有什么选择?我不想因为async/wait之类的语言特性似乎不能与void方法一起使用而放弃编程模式 async/async x vo

在我工作的公司里,我面临着.NET/C#async/await特性的问题,该特性涉及不返回任何内容的方法(void)


项目指南认为应该始终使用async/await,但在某些情况下,我需要使用void方法,而async/await似乎不能与此类方法一起正常工作

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

我有什么选择?我不想因为async/wait之类的语言特性似乎不能与void方法一起使用而放弃编程模式


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

异步等价于返回
int
的方法是返回
Task
的方法。返回
void
的方法的异步等价物是返回
Task
的方法。因此,您应该使异步“void”方法返回
Task
。轻松点

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

当然。异步等价物是“导致异步状态更改的方法应返回
任务
,异步计算值的方法应返回
任务
任务
是执行状态更改的任务,
任务
是计算T值的任务

我不想因为async/wait之类的语言特性似乎不能与void方法一起使用而放弃编程模式

如果您想使用异步,那么必须在设计模式中一致地应用异步逻辑。在同步代码中需要
void
的设计模式在异步代码中必须需要
Task


项目指南规定应始终使用async/await


我真诚地希望这些指导方针继续下去“……对于所有可能需要30毫秒以上的IO或处理器限制计算”。无缘无故地使程序中的每个方法都异步听起来像是一团糟。异步是用来控制延迟的;如果延迟没有问题,就不要使用它。

异步等效于返回
int
的方法是返回
Task
的方法。返回
void
的方法的异步等价物是返回
Task
的方法。因此,您应该使异步“void”方法返回
Task
。轻松点

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

当然。异步等价物是“导致异步状态更改的方法应返回
任务
,异步计算值的方法应返回
任务
任务
是执行状态更改的任务,
任务
是计算T值的任务

我不想因为async/wait之类的语言特性似乎不能与void方法一起使用而放弃编程模式

如果您想使用异步,那么必须在设计模式中一致地应用异步逻辑。在同步代码中需要
void
的设计模式在异步代码中必须需要
Task


项目指南规定应始终使用async/await


我真诚地希望这些指导方针继续下去“……对于所有可能需要30毫秒以上的IO或处理器限制计算”。无缘无故地使程序中的每个方法都异步听起来像是一团糟。异步是用来控制延迟的;如果您没有延迟问题,请不要使用它。

如果必须使用void,请使用void。“async\await不能与void方法一起工作”这一说法并不完全正确。这里也可以看到:“项目指导原则主张应始终使用async/await”这让我认为,无论是谁设计了这些指导原则,都对c#编程一无所知。您需要了解async/await是如何工作的,以了解您的问题。阅读MSDN:如果只返回任务而不返回内部的类型结果如何?这与void完全相同,但它是使用异步编程与C#是的,它是一个dup真的,顺便说一句,感谢所有的答案!!!你们都帮了我大忙!如果必须使用void,请使用void。“async\await不能与void方法一起工作”这一说法并不完全正确。这里也可以看到:“项目指导原则主张应始终使用async/await”这让我认为,无论是谁设计了这些指导原则,都对c#编程一无所知。您需要了解async/await是如何工作的,以了解您的问题。阅读MSDN:如果只返回任务而不返回内部的类型结果如何?这与void完全相同,但它是使用异步编程与C#是的,它是一个dup真的,顺便说一句,感谢所有的答案!!!你们都帮了我大忙!