.NET yield
dan await
: Menguasai Aliran Kawalan Tak Segerak dan Pengurusan Negeri
yield
dan await
, ciri utama dalam .NET, memudahkan aliran kawalan tak segerak dan lelaran. Walau bagaimanapun, mekanik asasnya boleh menjadi rumit untuk pembangun yang terbiasa dengan pelaksanaan berasaskan tindanan tradisional.
yield
dan Iterator: Pemeliharaan Negeri
Dalam blok lelaran, yield
tangan mengawal kembali kepada pemanggil buat sementara waktu. Panggilan seterusnya menyambung semula pelaksanaan dari titik yield
. Masa jalan dengan teliti menyimpan keadaan iterator—penunjuk arahan dan nilai pembolehubah setempat—pada timbunan, bukan timbunan. Storan berasaskan timbunan ini membolehkan penyambungan semula lancar pada bila-bila masa. Pengecualian ditangkap dan dilemparkan semula apabila keputusan diperoleh.
await
dan Operasi Asynchronous: Digantung Pelaksanaan
await
berkelakuan serupa dengan pernyataan return
, tetapi dengan perbezaan penting: ia menangguhkan pelaksanaan sehingga operasi tak segerak (mis., permintaan rangkaian) selesai. Masa jalan menggunakan perwakilan untuk menyimpan kesinambungan kaedah, termasuk titik sambung semula dan nilai pembolehubah setempat. Wakil ini bertindak sebagai panggilan balik operasi tak segerak. Pengecualian dikendalikan dan dibaling semula apabila keputusan diakses.
Timbunan Gelagat: Pelaksanaan Serentak
Yang penting, await
tidak mengubah susunan panggilan semasa. Keadaan kaedah dipindahkan ke timbunan, membenarkan kaedah panggilan diteruskan secara serentak sementara rekod pengaktifannya kekal pada tindanan. Ini menghalang tindanan tindanan, walaupun dengan panggilan kaedah bersarang.
Pengendalian Pengecualian Teguh
Kedua-dua yield
dan await
menggabungkan pengendalian pengecualian terbina dalam. Pengecualian yang tidak dikendalikan disimpan dalam iterator atau tugas dan dibuang kemudian, memastikan pengurusan pengecualian yang bersih dalam senario tak segerak.
Atas ialah kandungan terperinci Bagaimanakah `menghasilkan` dan `menunggu` Mengurus Aliran Kawalan dan Keadaan dalam Operasi Tak Segerak .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!