我添加了一个这样的单例。
在 Startup.cs 中,我添加了以下内容:
services.AddSingleton<MySingleton>();
我想像这样构建我的单例(当然这是不可能的):public class MySingleton
{
public MySingleton()
{
await InitAsync();
}
private async Task InitAsync()
{
await Stuff();
}
}
如何在不造成死锁的情况下解决此问题?
最佳答案
据我所知,ASP.NET Core 中的配置不是异步的,因此无法使用异步工厂或类似方式添加服务。
正因为如此,考虑到如果只在应用程序启动时进行一次阻塞并不是什么大问题,我认为您应该在创建服务时进行阻塞。而且由于 ASP.NET Core 没有同步上下文,这也不会导致死锁。
关于c# - AddSingleton 与异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729956/