Async dan Await Demystified: Mengelakkan Tugas.Run Conundrum
Memahami async dan menunggu boleh menjadi rumit pada mulanya, tetapi memecahkan konsep boleh memudahkan proses.
Async lwn. Latar Belakang Pelaksanaan Benang
Async tidak semestinya bermaksud "benang latar belakang"; ia merujuk kepada kaedah yang membenarkan kawalan "menghasilkan" pada urutan panggilan sebelum meneruskan. Mata hasil ini ditandakan dengan ekspresi menunggu.
Awaitable vs. Async
Jenis yang boleh ditunggu boleh ditunggu (seperti dalam ekspresi await), manakala kaedah async membenarkan untuk asynchronous perlaksanaan. Bukan semua kaedah async mengembalikan jenis yang boleh ditunggu, dan sebaliknya.
Task.Run for Background Execution
Jika anda ingin melaksanakan operasi pada urutan latar belakang dan membuatnya boleh ditunggu, gunakan Task.Run:
private Task<int> DoWorkAsync() { return Task.Run(() => 1 + 2); }
Kaedah Async untuk Menghasilkan
Buat kaedah async yang menghasilkan kembali kepada pemanggil dengan menggunakan await dan async dalam tandatangan kaedah:
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
Elakkan Tugasan. Jalankan dalam Kaedah Segerak
Ia tidak disyorkan untuk membalut kaedah segerak dalam Task.Run. Jika anda perlu melaksanakan pada urutan latar belakang, buat tugasan berasingan.
Sumber untuk Penerokaan Selanjutnya
Atas ialah kandungan terperinci Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async dan Await?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!