async dan menunggu: memudahkan pengaturcaraan asynchronous tanpa menyekat UI
dan async
adalah alat yang berkuasa dalam pengaturcaraan asynchronous, meningkatkan kebolehbacaan kod dan kebolehkerjaan. Walau bagaimanapun, operasi mereka berbeza dengan ketara dari benang latar belakang tradisional. Mari kita jelaskan tingkah laku mereka. await
private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // Other UI-responsive tasks here int a = 1; // This executes immediately, not after the 5-second delay int x = await access; // Execution pauses here until DoSomethingAsync completes }
menandakan pengkompil untuk menghasilkan mesin negara. Mesin ini menguruskan kitaran hayat operasi tak segerak. async
memulakan tugas tak segerak (access
). Secara kritis, kerana DoSomethingAsync
menggunakan DoSomethingAsync
, kaedah await
tidak menghalang benang UI. Bahagian button1_Click
boleh dilaksanakan secara serentak. // Other UI-responsive tasks here
(tidak ditunjukkan, tetapi dianggap mengandungi DoSomethingAsync
) memperkenalkan kelewatan 5 saat. Walau bagaimanapun, System.Threading.Thread.Sleep(5000)
menghasilkan kawalan kembali kepada pemanggil. UI tetap responsif. Apabila await access
selesai, thread thread benang resume DoSomethingAsync
dari mana ia berhenti, memberikan hasil kepada button1_Click
. x
, Thread.Start()
dan async
jangan buat benang baru. Sebaliknya, mereka memanfaatkan kolam renang dan mesin negara untuk menguruskan operasi tak segerak dengan cekap, menghalang UI membeku dan membolehkan pelaksanaan serentak. Ini menawarkan pendekatan yang lebih bersih dan lebih cekap untuk pengaturcaraan asynchronous. await
Atas ialah kandungan terperinci Bagaimanakah `async` dan` menunggu` menguruskan operasi tak segerak tanpa menyekat benang UI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!