Pengaturcaraan Asynchronous dalam Aplikasi Konsol dalam C#
Dalam bidang pengaturcaraan C#, model pengaturcaraan tak segerak menggunakan kata kunci 'async' menawarkan yang cekap pelaksanaan dengan mengelakkan sekatan benang sementara menunggu selesainya operasi yang telah lama berjalan. Walau bagaimanapun, aplikasi konsol menimbulkan cabaran apabila melibatkan penyepaduan model ini.
Dilema Fungsi Utama Asynchronous
Dalam pengaturcaraan segerak, adalah penting untuk menyebarkan 'async ' kata kunci sepanjang timbunan panggilan, dari titik masuk ke fungsi tak segerak. Walau bagaimanapun, dalam aplikasi konsol, titik masuk (fungsi Utama) tidak boleh ditandakan sebagai tak segerak kerana ralat penyusunan.
Mengatasi Had
Terdapat dua pendekatan utama untuk menyelesaikan had ini:
1. Sekat Pelaksanaan:
Ini melibatkan penyekatan utas utama sehingga operasi tak segerak selesai. Satu cara untuk mencapai matlamat ini ialah dengan memanfaatkan kaedah 'Tunggu' pada Tugasan yang dikembalikan:
static void Main() { MainAsync().Wait(); }
Walau bagaimanapun, pendekatan ini boleh menyebabkan pengecualian dibungkus ke dalam AggregateException. Untuk mengelakkan perkara ini, pertimbangkan untuk menggunakan kaedah GetAwaiter().GetResult():
static void Main() { MainAsync().GetAwaiter().GetResult(); }
2. Gunakan Konteks Anda Sendiri:
Sebagai alternatif, anda boleh mencipta konteks asinkron tersuai untuk mengurus pelaksanaan tak segerak. Ini membolehkan anda memisahkan titik masuk daripada kod tak segerak:
static void Main() { AsyncContext.Run(() => MainAsync()); }
Pendekatan ini menyediakan mekanisme yang teguh untuk mengendalikan operasi tak segerak dalam aplikasi konsol.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Async/Await dengan Berkesan dalam Aplikasi Konsol C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!