В следующем примере кода видно, что поток, созданный в статическом конструкторе, запускается только после завершения выполнения статического конструктора. В данном случае это приводит к тому, что статический конструктор никогда не завершается из-за ожидания.
Что тут происходит?
using System;
using System.Threading;
static public class Test
{
static public bool isDone = false;
static Test()
{
Thread a = new Thread(TestThread);
a.Priority = ThreadPriority.Highest;
a.Start();
while (!isDone)
Thread.Sleep(1);
Console.WriteLine(isDone);
}
static private void TestThread()
{
isDone = true;
}
}