Brunni (./419) :
J'ai réussi à faire un singleton où j'obtiens deux instances différentes en faisant 2 accès successifs d'un même thread dans mon appli Métro \o/
public static TrucMuche Instance
{
get
{
if (sharedInstance == null)
sharedInstance = new TrucMuche();
return sharedInstance;
}
}
Dieu sait la merde qui s'est passé derrière 
Bah, je ne connais pas le C#, mais personnellement je ferais ça (en C++/Qt):
private static QAtomicPointer<TrucMuche> sharedInstance;
private static QMutex sharedInstanceMutex;
public static TrucMuche *getInstance() {
// fast lock-free path for the common case, using atomicity
if (sharedInstance != 0)
return sharedInstance;
{
QMutexLocker lock(&sharedInstanceMutex);
if (sharedInstance != 0)
return sharedInstance;
TrucMuche *newInstance = new TrucMuche();
sharedInstance = newInstance;
return newInstance;
}
}