Корректный Double Checking Locking Pattern
class Singleton
{
private static readonly object _locker = new object();
private static volatile Singleton _instance = null;
public static Singleton Instance
{
get
{
if( _instance == null )
{
lock( _locker )
if( _instance == null )
_instance = new Singleton();
}
return _instance;
}
}
}
Взято с http://blogs.byte-force.com/xor/archive/2006/01/25...