我有这样的方法:
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()
。
我认为会发生的是:
- 当有人第一次调用它时,
SaveAllAsync()
会将控制权返回给该线路的调用者await xmlWriter.WriteStartDocumentAsync();
- 然后......当他们等待
SaveAllAsync()
(或等待任务)......会发生什么?仍然会SaveAllAsync()
停留在第一个 await 直到被调用?因为没有涉及线程,我想是这样的......