使い捨ての非同期初期化の実現: 優れたアプローチ
頻繁に発生するプログラミングの課題には、重要な非同期メソッドを 1 回だけ実行することが含まれます。 SemaphoreSlim
はこれを実現できますが、AsyncLazy
はよりエレガントで簡潔なソリューションを提供します。
AsyncLazy の紹介: 合理化されたソリューション
AsyncLazy
は本質的に、非同期操作用に設計された変更された Lazy<T>
です。 最初のアクセス時に値を遅延初期化するため、1 回限りの非同期初期化の管理に最適です。
実装の詳細
AsyncLazy
を使用して、非同期初期化が 1 回だけ実行されるようにする方法は次のとおりです。
<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () => { await DoStuffOnlyOnceAsync(); return true; });</code>
これにより、AsyncLazy
内に非同期初期化ロジックをラップする DoStuffOnlyOnceAsync
インスタンスが作成されます。 その結果、最初のアクセス時にのみ実行される遅延タスクが生成されます。
使用例
初期化をトリガーして完了を待つには、単に GetAwaiter()
:
<code class="language-csharp">var isInitialized = await asyncLazy.GetAwaiter();</code>
これにより DoStuffOnlyOnceAsync
が開始され (まだ実行されていない場合)、成功を示すブール値が返されます。
概要
AsyncLazy
は、重要な非同期メソッドを確実に 1 回実行するためのクリーンで効率的なメソッドを提供します。初期化を遅延タスク内にカプセル化することで、コードが簡素化され、結果にアクセスするためのユーザーフレンドリーな方法が提供されます。
以上がAsyncLazy は、重要な非同期メソッドが 1 回だけ実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。