为什么我们必须等待C#中的异步方法调用

用户名

在C#中,当我们调用异步方法时,需要在该方法中等待它,否则编译器将发出警告消息,称该方法将被称为sync,而无需“等待”。我知道在以下情况下这很有用:

var task = DoSomethingLongAsync();
DoSomethingElse();
await task;

那是因为当我们调用该异步方法时,我们可以做其他事情,然后等待异步结果。

但是在某些其他情况下,我们不需要等待异步结果,例如类似于Web服务器的场景:

listen();
while (true)
{
    var request = Accept();
    await ProcessRequestAsync(request);
}

显然,对于上述情况,我们希望可以并行处理请求。但是,如果我们在那里使用await(当前),则请求将被一个接一个地处理,而不是我们期望的那样。

那么在相似的情况下我们应该如何调用异步方法呢?

Zohar Peled

你不具备使用await-这是一个警告,而不是错误。
编译器会向您发出此警告,因为方法的通常用例async是异步运行它们,并为此使用await关键字。

基本上,此警告是编译器提醒您的方法,确保不会引起注意-但这不会阻止您使用async没有await关键字的方法-您的代码将编译并运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

为什么我们需要Java中的默认方法?

来自分类Python

通过超级调用时,为什么我们必须使用__dunder__方法而不是运算符?

来自分类Java

为什么有时我们必须在Android中称呼super?

来自分类Java

为什么我们需要在Spring Security configure(HttpSecurity http)方法中调用http.addFilterBefore()方法?

来自分类Dev

为什么我们必须在C#中同时定义==和!=?

来自分类Dev

为什么我们需要C ++中的虚函数?

来自分类Dev

我们如何等待C ++ / CX中的C#异步委托函数

来自分类Dev

为什么我们必须在react-native的promise链的末尾调用`.done()`?

来自分类Dev

为什么我们必须在onClick方法中添加“视图”作为参数及其作用?

来自分类Dev

为什么我们需要在C#中锁定并反对?

来自分类Dev

如果可以编写我们自己的等待对象,那么异步方法为什么只能返回Task <T>,Task和void?

来自分类Dev

在异步功能中,为什么我必须等待?

来自分类Dev

当我们不等待异步方法时会发生什么

来自分类Dev

为什么我们必须在枚举器对象上调用to_a?

来自分类Dev

为什么我们需要互斥锁等待通知

来自分类Dev

为什么我们必须为ReactJS安装NodeJS

来自分类Dev

为什么在C#方法中我们需要多个`await`语句?

来自分类Dev

为什么我们在异步函数中在主线程上调用完成?

来自分类Dev

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

来自分类Dev

为什么我们不能在C#中的结构中定义数组

来自分类Dev

为什么我们必须在“ gpupdate”调用上附加/ force标志?

来自分类Dev

为什么我们必须移植ROM

来自分类Dev

为什么我们需要在此脚本中调用“ c.set.bind(c)”?

来自分类Dev

为什么当我们调用“任务”变量时,必须将其写为“ task()”

来自分类Dev

为什么我们在TypeScript中说装饰器?为什么不注释(如Java)或属性(如C#)?

来自分类Dev

为什么我们不能在Java的普通方法中调用this()方法?

来自分类Dev

我们何时以及为什么必须使用 malloc?

来自分类Dev

为什么我们在 C# 中为类属性使用 description 属性

来自分类Dev

为什么我们必须分离状态/突变/动作?

Related 相关文章

  1. 1

    为什么我们需要Java中的默认方法?

  2. 2

    通过超级调用时,为什么我们必须使用__dunder__方法而不是运算符?

  3. 3

    为什么有时我们必须在Android中称呼super?

  4. 4

    为什么我们需要在Spring Security configure(HttpSecurity http)方法中调用http.addFilterBefore()方法?

  5. 5

    为什么我们必须在C#中同时定义==和!=?

  6. 6

    为什么我们需要C ++中的虚函数?

  7. 7

    我们如何等待C ++ / CX中的C#异步委托函数

  8. 8

    为什么我们必须在react-native的promise链的末尾调用`.done()`?

  9. 9

    为什么我们必须在onClick方法中添加“视图”作为参数及其作用?

  10. 10

    为什么我们需要在C#中锁定并反对?

  11. 11

    如果可以编写我们自己的等待对象,那么异步方法为什么只能返回Task <T>,Task和void?

  12. 12

    在异步功能中,为什么我必须等待?

  13. 13

    当我们不等待异步方法时会发生什么

  14. 14

    为什么我们必须在枚举器对象上调用to_a?

  15. 15

    为什么我们需要互斥锁等待通知

  16. 16

    为什么我们必须为ReactJS安装NodeJS

  17. 17

    为什么在C#方法中我们需要多个`await`语句?

  18. 18

    为什么我们在异步函数中在主线程上调用完成?

  19. 19

    为什么我们必须在Java脚本(Razor)中对C#代码使用引号

  20. 20

    为什么我们不能在C#中的结构中定义数组

  21. 21

    为什么我们必须在“ gpupdate”调用上附加/ force标志?

  22. 22

    为什么我们必须移植ROM

  23. 23

    为什么我们需要在此脚本中调用“ c.set.bind(c)”?

  24. 24

    为什么当我们调用“任务”变量时,必须将其写为“ task()”

  25. 25

    为什么我们在TypeScript中说装饰器?为什么不注释(如Java)或属性(如C#)?

  26. 26

    为什么我们不能在Java的普通方法中调用this()方法?

  27. 27

    我们何时以及为什么必须使用 malloc?

  28. 28

    为什么我们在 C# 中为类属性使用 description 属性

  29. 29

    为什么我们必须分离状态/突变/动作?

热门标签

归档