Rumah >pembangunan bahagian belakang >C++ >Api-dan-Lupa dalam C#: Async/Await vs. Perwakilan Async Lama – Pendekatan Mana Yang Terbaik?
"Fire and forget" dalam C#: Async/Await vs. delegasi async lama - pendekatan manakah yang terbaik?
Dalam percubaan untuk memudahkan panggilan "fire and forget" dalam C#, pembangun mungkin menghadapi cabaran apabila beralih kepada sintaks tak segerak baharu. Artikel ini meneroka perbezaan antara cara lama dan cara baharu.
Dalam pendekatan lama (ditunjukkan oleh perwakilan "async" dalam kod sampel), urutan asas telah ditamatkan sebaik sahaja kaedah EndInvoke() dipanggil. Kaedah BeginInvoke() memastikan bahawa utas dimulakan, membenarkan operasi "mula dan lupa" untuk memanggil kaedah DoIt() secara tidak segerak. Walaupun pendekatan ini berfungsi, ia memerlukan penutupan pemegang tunggu async secara manual.
Sintaks tak segerak baharu (dicontohkan oleh kaedah DoIt2()) menghapuskan keperluan untuk EndInvoke() dan mengendalikan penutupan. Walau bagaimanapun, ia memperkenalkan keperluan untuk menunggu Task.Yield(), yang memerlukan kaedah async sedia ada untuk ditindih untuk menambah pemegang tempat ini.
Untuk menyelesaikan masalah memanggil kaedah segerak A() secara tak segerak tanpa mewujudkan kerumitan yang tidak perlu, pembangun boleh mengelak daripada menggunakan async void dan memanggil A() terus menggunakan Task.Run(A). Pendekatan ini meniru perwakilan async lama tanpa kerumitan async/menunggu.
Atas ialah kandungan terperinci Api-dan-Lupa dalam C#: Async/Await vs. Perwakilan Async Lama – Pendekatan Mana Yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!