单一方法中的多个等待

异灵长类

我有这样的方法:

public static async Task SaveAllAsync()
{
    foreach (var kvp in configurationFileMap)
    {
        using (XmlWriter xmlWriter = XmlWriter.Create(kvp.Value, XML_WRITER_SETTINGS))
        {
            FieldInfo[] allPublicFields = 
                           kvp.Key.GetFields(BindingFlags.Public | BindingFlags.Static);
            await xmlWriter.WriteStartDocumentAsync();
            foreach (FieldInfo fi in allPublicFields)
            {
                await xmlWriter.WriteStartElementAsync("some", "text", "here");
            }
            await xmlWriter.WriteEndDocumentAsync();
        }
    }
}

但是我努力跟踪有人打电话时会发生的情况SaveAllAsync()

我认为将会发生以下情况:

  1. 有人第一次呼叫它时,SaveAllAsync()会将控制权返回给该行的呼叫者await xmlWriter.WriteStartDocumentAsync();
  2. 然后...当他们等待SaveAllAsync()(或等待任务)时,会发生什么?SaveAllAsync()仍然是第一的await坚持到它被调用?因为不涉及线程,所以我想是这样的...
斯蒂芬·克莱里

您可以awaitasync方法视为“暂停”该方法,直到该操作完成为止。作为一种特殊情况,如果操作已经完成(或非常快),则await不会“暂停”该方法。它会立即继续执行。

因此,在这种情况下(假设WriteStartDocumentAsync尚未完成),await将暂停方法并将未完成的任务返回给调用方。请注意,Taskasync方法返回的代表该方法。方法完成后,Task即完成。

最终,WriteStartDocumentAsync它将完成,并且将安排该async方法的其余部分以继续运行。在这种情况下,它将执行方法的下一部分,直到next await,再次暂停时,依此类推。最终,该async方法将完成,这将完成Task表示该方法的返回值。

有关更多信息,我在我的博客上有一个async/await介绍

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单一方法中的多个等待

来自分类Dev

单一方法可产生多个新的Scanner返回

来自分类Dev

通过单一方法但使用多个查询的数据库连接

来自分类Dev

使用单一方法从多个输入字段计算年龄

来自分类Dev

使用遮罩合并图像的单一方法

来自分类Dev

单一方法类与接口实现

来自分类Dev

在ASP.Net MVC中以单一方法返回视图和文件

来自分类Dev

Angular.js中Ajax单一方法的体系结构

来自分类Dev

在同一方法中使用多个等待的效果?

来自分类Dev

如何通过单一方法从不同索引中删除数组中的元素?

来自分类Dev

如何使用linq在单一方法中使聚合函数?

来自分类Dev

使用单一方法返回不同类型的数据

来自分类Dev

如何以单一方法返回int日期,月份,年份

来自分类Dev

使用哪种单一方法检查:空白?&& !错误的?

来自分类Dev

使用单一方法检测按钮阵列上的点击

来自分类Dev

运行时反射-使用单一方法提取符号

来自分类Dev

匿名和授权用户的Spring @RestController单一方法

来自分类Dev

maven-surefire-plugin 运行单一方法,但在课堂上失败

来自分类Dev

在Spock中模拟对同一方法的多个调用

来自分类Dev

同一方法中的多个数据库

来自分类Dev

异步和等待-处理对同一方法的多次调用-互相锁定/等待吗?

来自分类Dev

defprotocol“没有单一方法”错误似乎是莱宁根的一个错误

来自分类Dev

恢复所有线程使用等待状态通知唯一方法

来自分类Dev

在Quickbook PHP API中,如何使用enqueue()将对同一方法的多个调用排队

来自分类Dev

在Quickbook PHP API中,如何使用enqueue()将对同一方法的多个调用排队

来自分类Dev

Mockito-分别验证同一方法的多个调用

来自分类Dev

异步运行同一方法的多个实例?

来自分类Dev

将多个wx.EVT_MENU绑定到同一方法?

来自分类Dev

在C#5中多次异步调用同一方法是否安全?

Related 相关文章

  1. 1

    单一方法中的多个等待

  2. 2

    单一方法可产生多个新的Scanner返回

  3. 3

    通过单一方法但使用多个查询的数据库连接

  4. 4

    使用单一方法从多个输入字段计算年龄

  5. 5

    使用遮罩合并图像的单一方法

  6. 6

    单一方法类与接口实现

  7. 7

    在ASP.Net MVC中以单一方法返回视图和文件

  8. 8

    Angular.js中Ajax单一方法的体系结构

  9. 9

    在同一方法中使用多个等待的效果?

  10. 10

    如何通过单一方法从不同索引中删除数组中的元素?

  11. 11

    如何使用linq在单一方法中使聚合函数?

  12. 12

    使用单一方法返回不同类型的数据

  13. 13

    如何以单一方法返回int日期,月份,年份

  14. 14

    使用哪种单一方法检查:空白?&& !错误的?

  15. 15

    使用单一方法检测按钮阵列上的点击

  16. 16

    运行时反射-使用单一方法提取符号

  17. 17

    匿名和授权用户的Spring @RestController单一方法

  18. 18

    maven-surefire-plugin 运行单一方法,但在课堂上失败

  19. 19

    在Spock中模拟对同一方法的多个调用

  20. 20

    同一方法中的多个数据库

  21. 21

    异步和等待-处理对同一方法的多次调用-互相锁定/等待吗?

  22. 22

    defprotocol“没有单一方法”错误似乎是莱宁根的一个错误

  23. 23

    恢复所有线程使用等待状态通知唯一方法

  24. 24

    在Quickbook PHP API中,如何使用enqueue()将对同一方法的多个调用排队

  25. 25

    在Quickbook PHP API中,如何使用enqueue()将对同一方法的多个调用排队

  26. 26

    Mockito-分别验证同一方法的多个调用

  27. 27

    异步运行同一方法的多个实例?

  28. 28

    将多个wx.EVT_MENU绑定到同一方法?

  29. 29

    在C#5中多次异步调用同一方法是否安全?

热门标签

归档