请考虑以下代码。静态初始化程序中的Task.Run
static class X
{
public static int Value = Task.Run(() => 0).Result;
}
class Program
{
static void Main(string[] args)
{
var value = X.Value;
}
}
调用Task.Run
,然后在静态初始化Result
导致程序冻结永久。为什么?
这是静态类初始化和我不熟悉的类初始化锁的内部工作。我遇到的实际情况是比这更复杂的代码,但我能够将它缩小到这个小例子。没有麻烦提出更好的解决方案或解决方法。感谢您的解释! –