Mencapai Permulaan Async Penggunaan Tunggal: Pendekatan Unggul
Cabaran pengaturcaraan yang kerap melibatkan pelaksanaan kaedah tak segerak kritikal sekali sahaja. Walaupun SemaphoreSlim
boleh mencapai ini, AsyncLazy
menawarkan penyelesaian yang lebih elegan dan ringkas.
Memperkenalkan AsyncLazy: Penyelesaian Diperkemas
AsyncLazy
pada asasnya ialah Lazy<T>
diubah suai yang direka untuk operasi tak segerak. Ia dengan malas memulakan nilai apabila akses pertama, sangat sesuai untuk mengurus pengamulaan async sekali.
Butiran Pelaksanaan
Berikut ialah cara untuk menggunakan AsyncLazy
untuk memastikan pemula async anda berjalan sekali sahaja:
<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () => { await DoStuffOnlyOnceAsync(); return true; });</code>
Ini mencipta contoh AsyncLazy
yang membalut logik permulaan tak segerak dalam DoStuffOnlyOnceAsync
. Hasilnya ialah tugas malas yang hanya dilaksanakan pada akses pertama.
Contoh Penggunaan
Untuk mencetuskan permulaan dan menunggu penyiapannya, hanya gunakan GetAwaiter()
:
<code class="language-csharp">var isInitialized = await asyncLazy.GetAwaiter();</code>
Ini akan memulakan DoStuffOnlyOnceAsync
(jika ia belum dijalankan) dan mengembalikan boolean yang menunjukkan kejayaan.
Ringkasan
AsyncLazy
menyediakan kaedah yang bersih dan cekap untuk memastikan satu pelaksanaan kaedah tak segerak yang penting. Dengan merangkum pemulaan dalam tugas malas, ia memudahkan kod dan menawarkan cara yang mesra pengguna untuk mengakses hasilnya.
Atas ialah kandungan terperinci Bagaimanakah AsyncLazy Boleh Memastikan Kaedah Async Kritikal Melaksanakan Sekali sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!