gpt4 book ai didi

c# - 是否有可能在静态 ctor 完成运行之前创建一个类(常规 ctor)的实例(在多线程环境中)?

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:21 25 4
gpt4 key购买 nike

我有一个静态构造器,它从我的配置服务器获取配置并设置一个静态变量。

我有一个常规构造函数,它根据该配置实例化一些属性。

这是我类(class)的一个例子:

public class MyClass
{
private static MyConfig _config;
private UnitOfWork _uow;

static MyClass(){
// This takes some time since it's a web service call!!!
_config = ConfigService.GetConfig();
}

public MyClass(){
_uow = CreateUow(_config.UOWConnectionString);
}

public Response DoSomething(){
// logic with _uow
}
}

假设我有一个接收多个请求的 WCF 服务,每个请求都会实例化 MyClass 并运行 DoSomething 方法。

静态 ctor 执行 Web 服务调用,这需要一些时间才能获得结果。

我能确定静态构造函数会在任何请求收到MyClass实例之前完成运行吗?

我知道静态 ctors 是线程安全的。

在静态 ctor 完成运行之前,创建新实例是否有任何锁定?

最佳答案

静态构造函数保证在创建任何实例之前运行。来自 MSDN .

A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.

关于c# - 是否有可能在静态 ctor 完成运行之前创建一个类(常规 ctor)的实例(在多线程环境中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521270/

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