Rumah >pembangunan bahagian belakang >C++ >Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async/Await?
Memahami Async/Await: When to Use Task. Run
Dalam bidang pengaturcaraan async, adalah penting untuk membezakan antara kaedah tak segerak ( async) dan pelaksanaan tak segerak (benang latar belakang). Untuk menyelidiki nuansa, mari kita terokai senario berikut:
Senario 1: Tiada Benang Latar Belakang
private async Task DoWork1Async() { int result = 1 + 2; }
Dalam contoh ini, kaedah ditandakan sebagai tidak segerak tetapi melakukan operasi remeh yang tidak memerlukan pelaksanaan latar belakang. Oleh itu, menunggu DoWork1Async() akan dilaksanakan secara serentak.
Senario 2: Melaksanakan pada Benang Latar Belakang
private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); }
Di sini, kaedah itu sekali lagi ditandakan sebagai tak segerak, tetapi ia membungkus operasi sebenar dalam Task.Run. Ini memastikan bahawa operasi dilaksanakan pada benang latar belakang. Walau bagaimanapun, menunggu DoWork2Async() masih akan dilaksanakan secara serentak, kerana operasi benang latar belakang tidak ditunggu.
Jenis Pemulangan Kaedah dan Gelagat Async
Jenis pemulangan a kaedah juga boleh mempengaruhi tingkah laku asyncnya. Kaedah mengembalikan Tugasan atau Tugas
Task.Run for Asynchronous Execution
Untuk menjadikan kaedah menunggu dan melaksanakan operasinya pada urutan latar belakang, kita harus menggunakan Task.Run untuk mencipta tugasan baharu. Pendekatan ini lebih sesuai daripada membungkus keseluruhan kaedah dalam Task.Run kerana ia membolehkan kita mengekalkan pemisahan yang jelas antara kod segerak dan tak segerak.
private Task<int> DoWorkAsync() // No async because the method does not need await { return Task.Run(() => { return 1 + 2; }); }
Amalan Terbaik
Atas ialah kandungan terperinci Bilakah Saya Perlu Menggunakan `Task.Run` dengan Async/Await?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!