Melaksanakan Fire-and-Forget yang Cekap dalam C#
C# menawarkan beberapa cara untuk mencipta kaedah "fire-and-forget"—fungsi yang dilaksanakan tanpa menyekat pemanggil. Walaupun atribut [OperationContract(IsOneWay = true)]
WCF ialah pendekatan biasa, alternatif yang lebih mudah memberikan prestasi yang lebih baik.
Panggilan Kaedah Tidak Menyekat Mudah
Pilihan ini menawarkan pelaksanaan tanpa sekatan yang cepat dan cekap:
ThreadPool.QueueUserWorkItem
: Ini menambahkan kaedah pada kumpulan benang, melaksanakannya pada urutan latar belakang.<code class="language-csharp">ThreadPool.QueueUserWorkItem(o => FireAway());</code>
Task.Run
: Diperkenalkan dalam .NET 4.0, Task.Run
mencipta dan menjadualkan tugas pada kumpulan benang.<code class="language-csharp">Task.Run(() => FireAway());</code>
Kedua-dua kaedah melancarkan FireAway
secara tidak segerak, membiarkan utas utama diteruskan semasa tugas latar belakang dijalankan.
Pertimbangan Penting untuk Kaedah Tidak Menyekat
Ingat, tidak menyekat tidak menjamin siap. Kaedah yang dipanggil mungkin tidak selesai sebelum program keluar. Jika kejayaan kaedah adalah penting untuk kefungsian aplikasi anda, anda memerlukan mekanisme tambahan untuk memastikan siap. Ini mungkin melibatkan penyekatan benang atau pengendalian penyiapan khusus, terutamanya dalam persekitaran seperti ASP.NET, di mana penamatan pramatang boleh menjadi masalah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kaedah Api-dan-Lupa dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!