Task ialah objek yang digunakan untuk mewakili operasi tak segerak dalam C# Ia terletak dalam ruang nama System.Threading.Tasks. Task menyediakan API peringkat tinggi untuk mengendalikan operasi serentak, tak segerak, menjadikannya lebih mudah untuk menulis kod tak segerak dalam aplikasi .NET.
Task ialah objek yang digunakan untuk mewakili operasi tak segerak dalam C# dan ia terletak dalam ruang nama System.Threading.Tasks. Task menyediakan API peringkat tinggi untuk mengendalikan operasi serentak, tak segerak, menjadikannya lebih mudah untuk menulis kod tak segerak dalam aplikasi .NET. Berikut ialah penerangan terperinci tentang beberapa ciri utama dan penggunaan Tugas.
1 Buat Tugasan Anda boleh menggunakan kaedah Task.Run untuk melaksanakan operasi pada benang latar belakang dan mengembalikan objek Tugasan yang mewakili operasi.
csharp
Task task = Task.Run(() => { // 这里是后台线程上执行的代码 Console.WriteLine("Running in a separate thread."); });
2 Tunggu Tugasan selesai
Anda boleh menggunakan kaedah Tugas.Tunggu untuk menunggu satu atau lebih objek Tugasan selesai.
csharp
task.Wait(); // 等待 task 完成
Sebagai alternatif, anda boleh menggunakan kata kunci tunggu (dalam kaedah async) untuk menunggu secara tak segerak sehingga Tugasan selesai tanpa menyekat urutan semasa. . dan Faulted (ralat telah berlaku). Anda boleh menyemak status semasa Tugas melalui sifat Task.Status.
4. Pengendalian pengecualian
Jika pengecualian berlaku dalam Tugasan dan pengecualian tidak ditangkap, status Tugasan akan Disalahkan. Anda boleh mengakses maklumat pengecualian melalui sifat Task.Exception. Apabila menggunakan await, ungkapan await akan membuang semula pengecualian dan anda perlu mengendalikannya dalam blok cuba-tangkap.
csharp
await task; // 异步等待 task 完成
5. Nilai pulangan Task
Jika Tugasan mewakili pengiraan atau operasi, dan anda ingin mengembalikan hasilnya, maka anda boleh menggunakan Task
csharp
try { await task; } catch (AggregateException ae) { // 处理异常 }
6 Pembatalan Tugas
Anda boleh menggunakan CancellationToken untuk membatalkan satu atau lebih Tugasan.
csharp
Task<int> taskWithResult = Task.Run(() => { // 执行一些计算 return 42; }); int result = await taskWithResult; // 异步等待并获取结果
7. Gabungan Tugas
Anda boleh menggunakan Task.WhenAll atau Task.WhenAny untuk menunggu beberapa objek Tugasan selesai. Task.WhenAll menunggu semua tugasan selesai, manakala Task.WhenAny menunggu untuk mana-mana satu tugasan selesai.
csharp
CancellationTokenSource cts = new CancellationTokenSource(); Task cancellableTask = Task.Run(() => { for (int i = 0; i < 100; i++) { cts.Token.ThrowIfCancellationRequested(); // 执行一些操作 } }, cts.Token); // 在某个时刻取消任务 cts.Cancel();
8 Konfigurasikan konteks pelaksanaan Tugas
Dengan mengkonfigurasi Penjadual Tugas, anda boleh mengawal utas atau rangkaian mana Tugas dilaksanakan. Ini berguna dalam senario di mana kawalan yang lebih halus ke atas penggunaan benang diperlukan.
Task ialah alat yang berkuasa untuk mengendalikan pengaturcaraan tak segerak dalam .NET, membolehkan anda menulis kod yang lebih responsif dan cekap, terutamanya apabila berurusan dengan tugasan intensif I/O atau intensif pengiraan. Dengan memahami konsep asas dan penggunaan Tasks, anda boleh memanfaatkan model pengaturcaraan tak segerak untuk meningkatkan prestasi dan kebolehskalaan aplikasi anda dengan lebih baik.
Atas ialah kandungan terperinci Penjelasan terperinci tentang C#Task. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!