Das übliche Muster für .NET-Singletons erstellt eine einzelne Instanz pro App-Domäne. Die übliche Situation in asp.net besteht darin, dass mehrere Threads durch dieselbe App-Domäne laufen. Das bedeutet, dass Sie mehrere Threads gleichzeitig in Ihrem Singleton ausführen können.
Sie müssen das Singleton untersuchen und (nach besten Kräften koffreflektorkoff) bestimmen, ob es threadsicher ist oder nicht. Wenn Sie freigegebene Ressourcen beibehalten und ändern oder wenn Sie eine Art von Status kapseln, der zwischen Methodenaufrufen gespeichert wird, müssen Sie vorsichtig sein.
Sie könnten den Singleton innerhalb eines zweiten Singleton umbrechen, der Sperren verwendet, bevor er seine Aufrufe an denjenigen delegiert, über den Sie keine Kontrolle haben. Auf diese Weise können Sie die Sperrung feiner steuern, anstatt jeden einzelnen Singleton-Aufruf mit einer einzigen Sperre zu blockieren. Es würde Ihnen auch den Vorteil geben, die Position des Einfädelcodes zu zentralisieren ...
-1. Die Methoden müssten Sperren haben, wenn dies erforderlich ist. Dieser Link bezieht sich nicht auf diese Details (nur darüber, wie die Singleton-Klasse selbst erstellt wird, nicht ihre Funktionalität). –
+1. Dieser Kommentar verdient nicht -1. In der Tat können die Methoden Sperren benötigen, aber dies ist getrennt von der Implementierung des Singleton-Patterns selbst IMO. – Ben