gpt4 book ai didi

c# - 在 C# 构造函数中等待 AsyncMethod

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:02 26 4
gpt4 key购买 nike

给定:我有一个管理用户存储的类。现在在创建类时我想确保索引是一种异步方法。目前我只是调用等待,但我对此感到不舒服,因为我有点担心线程挂起等意外行为。

public MongoUserStorage(IMongoDatabase database)
{
userCollection = database.GetCollection<MongoUser>("Users");
roleCollection = database.GetCollection<MongoUserRole>("UserRoles");

CreateIndexesAsync().Wait();
}

问题:

处理这种异步方法的最佳方法是什么? (我想确保索引在类实例化后存在)

只需执行:CreateIndexesAsync().Wait();

var task = CreateIndexesAsync();
task.ConfigureAwait(false);
task.Wait();

或者更好的解决方案?

最佳答案

您指的是经典的 SynchronizationContext 死锁。只要 CreateIndexesAsync 不使用 SynchronizationContext 这不太可能,这是完全安全的。

研究 ConfigureAwait 的作用以及如何使用它。你目前的使用情况表明你真的不够了解。 task.ConfigureAwait(false); 是空操作,因为它创建了一个新的 TaskAwaiter 并将其丢弃。

关于c# - 在 C# 构造函数中等待 AsyncMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com