Asynchrone Initialisierung für den einmaligen Gebrauch erreichen: Ein überlegener Ansatz
Eine häufige Programmierherausforderung besteht darin, eine kritische asynchrone Methode nur einmal auszuführen. Während SemaphoreSlim
dies erreichen kann, bietet AsyncLazy
eine elegantere und prägnantere Lösung.
Wir stellen vor: AsyncLazy: Eine optimierte Lösung
AsyncLazy
ist im Wesentlichen ein modifiziertes Lazy<T>
, das für asynchrone Vorgänge entwickelt wurde. Es initialisiert langsam einen Wert beim ersten Zugriff und eignet sich perfekt für die Verwaltung einmaliger asynchroner Initialisierungen.
Implementierungsdetails
So verwenden Sie AsyncLazy
, um sicherzustellen, dass Ihre asynchrone Initialisierung nur einmal ausgeführt wird:
<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () => { await DoStuffOnlyOnceAsync(); return true; });</code>
Dadurch wird eine AsyncLazy
-Instanz erstellt, die die asynchrone Initialisierungslogik innerhalb von DoStuffOnlyOnceAsync
umschließt. Das Ergebnis ist eine verzögerte Aufgabe, die nur beim ersten Zugriff ausgeführt wird.
Anwendungsbeispiel
Um die Initialisierung auszulösen und auf ihren Abschluss zu warten, verwenden Sie einfach GetAwaiter()
:
<code class="language-csharp">var isInitialized = await asyncLazy.GetAwaiter();</code>
Dadurch wird DoStuffOnlyOnceAsync
initiiert (sofern es noch nicht ausgeführt wurde) und ein boolescher Wert zurückgegeben, der den Erfolg anzeigt.
Zusammenfassung
AsyncLazy
bietet eine saubere und effiziente Methode, um eine einzelne Ausführung einer wichtigen asynchronen Methode sicherzustellen. Durch die Kapselung der Initialisierung innerhalb einer verzögerten Aufgabe wird der Code vereinfacht und eine benutzerfreundliche Möglichkeit geboten, auf das Ergebnis zuzugreifen.
Das obige ist der detaillierte Inhalt vonWie kann AsyncLazy sicherstellen, dass eine kritische Async-Methode nur einmal ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!