我有簡單的單例類:在單新線程永遠不會結束
namespace TestApp
{
public class MySingleton
{
static MySingleton()
{
}
private static readonly MySingleton instance = new MySingleton();
private bool threadFinished = false;
public bool IsReady = false;
private MySingleton()
{
Thread t = new Thread(MyAction);
t.Start();
while (!threadFinished)
Thread.Sleep(10);
}
public static MySingleton Instance
{
get { return instance; }
}
private void MyAction()
{
threadFinished = true;
}
}
}
當我試圖instatiate這種情形:
var ir = MySingleton.Instance.IsReady;
它永遠不會結束 - while循環是無限的。爲什麼?以及如何在構造函數中在單例中運行backround線程?
它可以將threadFinished聲明爲volatile,但請google改爲更好的單例模式。 – fhogberg