Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memastikan Pelaksanaan Tunggal Kaedah Permulaan Tak Segerak dalam C#?

Bagaimanakah Saya Boleh Memastikan Pelaksanaan Tunggal Kaedah Permulaan Tak Segerak dalam C#?

Linda Hamilton
Lepaskan: 2025-01-13 21:48:42
asal
606 orang telah melayarinya

How Can I Ensure Single Execution of Asynchronous Initialization Methods in C#?

Pelaksanaan Tunggal Kaedah Permulaan Tak Segerak dalam C#

Dalam pembangunan C#, memastikan kaedah permulaan tak segerak dilaksanakan sekali sahaja adalah kritikal. Ini menghalang keadaan perlumbaan di mana beberapa utas serentak mencuba pemula yang sama, yang membawa kepada kemungkinan ralat. Walaupun SemaphoreSlim menyediakan penyelesaian, AsyncLazy<T> daripada pakej Microsoft.Extensions.Primitives menawarkan pendekatan yang lebih elegan dan cekap.

Memanfaatkan AsyncLazy

AsyncLazy<T> menyediakan permulaan malas untuk operasi tak segerak. Ia merangkumi tugas tak segerak, membolehkan anda menunggu penyelesaiannya menggunakan GetAwaiter(). Kelas AsyncLazy<T> yang diubah suai sedikit ditunjukkan di bawah:

<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>
Salin selepas log masuk

Aplikasi Praktikal

Menggunakan AsyncLazy<T> adalah mudah. Segerakkannya dengan logik permulaan anda sebagai ungkapan lambda:

<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () =>
{
    await DoStuffOnlyOnceAsync();
    return true;
});</code>
Salin selepas log masuk

Untuk melaksanakan permulaan, cuma tunggu objek asyncLazy:

<code class="language-csharp">await asyncLazy;</code>
Salin selepas log masuk

Ringkasan

AsyncLazy<T> menyediakan mekanisme yang bersih dan cekap untuk memastikan pelaksanaan tunggal kaedah permulaan tak segerak. Ia memudahkan pembangunan dengan menghapuskan kerumitan penguncian manual atau pengurusan semaphore, menghasilkan kod yang lebih mudah dibaca dan diselenggara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Pelaksanaan Tunggal Kaedah Permulaan Tak Segerak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan