Heim >Backend-Entwicklung >C++ >Wie kann ich die einmalige Ausführung der asynchronen Initialisierung in C# sicherstellen?
Sicherstellung der einmaligen Ausführung der asynchronen Initialisierung in C#
Bei der asynchronen Programmierung ist es wichtig sicherzustellen, dass Initialisierungsprozeduren nur einmal ausgeführt werden. Stellen Sie sich eine Klasse vor, die eine asynchrone Initialisierung über eine InitializeAsync()
-Methode benötigt. Es ist wichtig zu verhindern, dass mehrere Threads diese Methode gleichzeitig aufrufen. Obwohl SemaphoreSlim
verwendet werden könnte, gibt es effizientere und elegantere Methoden.
AsyncLazy: Eine optimierte Lösung
AsyncLazy
, eine Erweiterung der Standardklasse .NET Lazy
, ist für die asynchrone Initialisierung konzipiert. Es bietet eine einfache und effektive Lösung.
<code class="language-csharp">public class AsyncLazy<T> : Lazy<Task<T>> { public AsyncLazy(Func<T> valueFactory) : base(() => Task.Run(valueFactory)) { } public AsyncLazy(Func<Task<T>> taskFactory) : base(() => Task.Run(() => taskFactory())) { } public TaskAwaiter<T> GetAwaiter() { return Value.GetAwaiter(); } }</code>
Die Verwendung von AsyncLazy
ist unkompliziert. Instanziieren Sie es und stellen Sie Ihre asynchrone Initialisierungslogik bereit:
<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () => { await DoStuffOnlyOnceAsync(); return true; });</code>
Zusammenfassung
AsyncLazy
bietet eine robuste und benutzerfreundliche Methode, um die einmalige Ausführung der asynchronen Initialisierung sicherzustellen. Aufgrund seiner Einfachheit ist es ideal, um gleichzeitige Aufrufe kritischer Initialisierungsfunktionen zu verhindern.
Das obige ist der detaillierte Inhalt vonWie kann ich die einmalige Ausführung der asynchronen Initialisierung in C# sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!