請考慮以下代碼。靜態初始化程序中的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
導致程序凍結永久。爲什麼?
這是靜態類初始化和我不熟悉的類初始化鎖的內部工作。我遇到的實際情況是比這更復雜的代碼,但我能夠將它縮小到這個小例子。沒有麻煩提出更好的解決方案或解決方法。感謝您的解釋! –