public class MyClass<T>
{
public static readonly String MyStringValue;
static MyClass()
{
MyStringValue = GenerateString();
}
private static String GenerateString()
{
//Dynamically generated ONCE per type (hence, not const)
}
public void Foo()
{
Console.WriteLine(MyStringValue);
}
}
Tengo entendido que el string de solo lectura estático no se generará hasta que se llame al constructor estático en la clase. Pero el constructor estático no se invocará hasta que se acceda a uno de los métodos o variables estáticos.C# - Cadenas de solo lectura estáticas - ¿Es posible ejecutar problemas de subprocesos múltiples?
En un entorno de subprocesos múltiples, ¿es posible tener problemas debido a esto? Básicamente, ¿el constructor estático está bloqueado de forma predeterminada por singleton o tengo que hacer esto yo mismo? Es decir ... tengo que hacer lo siguiente:
private static Object MyLock;
static MyClass()
{
lock(MyLock)
{
if (MyStringValue == null)
MyStringValue = GenerateString();
}
}
posible duplicado de [¿Es seguro el hilo del constructor estático C#?] (Http://stackoverflow.com/questions/7095/is-the-c-static-constructor-thread-safe) –