Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 3 Min.

Thread-Safe Singleton in C#

Das Singleton Pattern lässt sich auch Thread Safe umsetzen. Wie das geht, zeigt ein Artikel.
Das Singleton Pattern stellt sicher, dass eine Klasse programmweit nur einmal instanziert werden kann. Es ist besonders nützlich bei Konfigurationsmanagern oder Protokollierungssystemen. Es gibt mehrere Arten, das umzusetzen. Z#um Beispiel so: public sealed class Singleton{    private static Singleton instance = null;    private Singleton() { }    public static Singleton Instance {        get {            if (instance == null) {                instance = new Singleton();            }            return instance;        }    }
}Aber wie der Autor auf https://csharpindepth.com/articles/Singleton schreibt, sollte man das so nicht einsetzen. Denn der Code ist nicht thread-safe. Ein anderer Thread könnte also zu bestimmten Zeiten eine weitere Instanz erzeugen. Damit dies nicht passiert, muss man den Code thread-safe machen. Wie das geht, zeigt ein Artikel auf CodeProject und zwar sowohl im klassischen doppelt geprüften Locking-Ansatz als auch mithilfe der modernen Lazy<T>-Methode.Die klassische Technik des doppelten Lockings minimiert den Performance-Overhead, indem sie nur beim ersten Zugriff auf die Instanz eine Sperre anwendet. Angesichts der Schwierigkeiten, die mit Multithreading-sicheren Implementierungen verbunden sind, ist diese Methode äußerst hilfreich.Im Gegensatz dazu ermöglicht die Lazy<T>-Klasse, die in C# 4.0 eingeführt wurde, eine noch einfachere und sicherere Implementierung. Diese Methode regelt die Thread-Sicherheit und verzögert die Instanzierung, bis die Instanz tatsächlich benötigt wird. Diese Techniken sind nicht nur für Entwickler im Bereich C# von Bedeutung, sondern bieten wertvolle Einsichten für jeden, der mit der Softwareerstellung in einer multithreaded Umgebung arbeitet.Abschließend ist es wichtig zu beachten, dass während Lazy<T> die bevorzugte Methode für die meisten modernen Anwendungen ist, Szenarien existieren, in denen die Flexibilität des doppelten Lockings vorteilhaft sein kann, insbesondere wenn dynamische Parameter zur Instanzierung benötigt werden. Die Wahl zwischen diesen Ansätzen sollte auf den spezifischen Anforderungen der Anwendung basieren.Weitere Informationen
Miscellaneous

Neueste Beiträge

Cursor als KI-Turbo für Fluent UI Blazor - Die KI-IDE Cursor in der Praxis, Teil 4
Die auf VS Code basierende KI-IDE Cursor eignet sich für die Entwicklung mit Microsoft Fluent UI Blazor. Für eine effizientere Arbeit mit dem KI-Agenten existiert inzwischen ein MCP-Server aus dem Fluent-UI-Blazor-Umfeld.
7 Minuten
24. Jun 2026
GitHub Copilot mit Markdown-Dateien steuern
GitHub Copilot liest Markdown-Dateien, die an bestimmten Orten im System oder im Projekt liegen. Wer diese Dateien gezielt einsetzt, gibt Copilot dauerhaften Kontext – ohne ihn bei je-dem Chat-Start neu erklären zu müssen.
5 Minuten
22. Jun 2026
UX goes Dev - Figma als Scharnier zwischen Entwurf, Design und .NET-Entwicklung
Figma entwickelt sich zur zentralen Plattform für integrierte Design-Dev-Workflows, in denen Gestalter:innen und Entwickler:innen von Beginn an am selben Artefakt arbeiten.
19 Minuten
18. Jun 2026

Das könnte Dich auch interessieren

Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
C#-.NET-Apps mit WinUI 3 - Komponentenbasierte Apps mit Fluent/FAST, Teil 3
Microsoft macht mit WinUI 3 ein natives User-Experience-Framework für Windows verfügbar, dessen Komponenten auf dem Microsoft-eigenen Design-System Fluent 2 basieren.
23 Minuten
13. Mai 2024
UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige