C# | Pengaturcaraan tak segerak dengan [async | menunggu | Tugasan]

WBOY
Lepaskan: 2024-07-23 21:49:44
asal
785 orang telah melayarinya

C# | Asynchronous programming with [async | await | Task]

Note
You can check other posts on my personal website: https://hbolajraf.net

Menggunakan tugas await dan async dalam C

Dalam C#, pengaturcaraan tak segerak digunakan untuk meningkatkan responsif aplikasi dengan membenarkan tugasan dijalankan serentak tanpa menyekat utas utama. Kata kunci tunggu dan tak segerak memainkan peranan penting dalam mencapai matlamat ini. Panduan ini akan menunjukkan kepada anda cara menggunakan Tugas await dan async dengan berkesan.

pengenalan

Pengaturcaraan tak segerak dalam C# adalah penting untuk tugasan yang mungkin mengambil masa yang banyak, seperti operasi terikat I/O atau permintaan rangkaian. Dengan menggunakan await dan async, anda boleh memastikan aplikasi anda kekal responsif sementara menunggu tugasan ini selesai.

Menggunakan Tugas async

  1. Tentukan Kaedah async: Untuk menggunakan await, tentukan kaedah async dalam kelas, biasanya mengembalikan Tugasan atau Tugasan.
   public async Task MyAsyncMethod()
   {
       // Asynchronous code here
   }
Salin selepas log masuk
  1. Panggil Kaedah async: Dalam kaedah lain, anda boleh memanggil kaedah async anda dengan kata kunci tunggu.
   await MyAsyncMethod();
Salin selepas log masuk

Kata kunci menunggu

Kata kunci tunggu digunakan dalam kaedah async untuk menjeda pelaksanaan sehingga tugas yang ditunggu selesai. Ia membolehkan urutan panggilan meneruskan kerja lain tanpa menyekat.

async Task MyAsyncMethod()
{
    var result = await SomeAsyncTask();
    // Code after the await will execute when SomeAsyncTask is completed.
}
Salin selepas log masuk

Pengendalian Pengecualian

Untuk mengendalikan pengecualian dalam kaedah tak segerak, anda boleh menggunakan blok cuba-tangkap standard. Apabila pengecualian dilemparkan dalam kaedah async, ia ditangkap dan disebarkan sebagai sebahagian daripada Tugasan.

try
{
    await SomeAsyncMethod();
}
catch (Exception ex)
{
    // Handle the exception
}
Salin selepas log masuk

Token Pembatalan

Untuk membatalkan operasi tak segerak, anda boleh menggunakan CancellationToken. Hantar Token Pembatalan kepada kaedah tak segerak dan semak pembatalan dalam kaedah tersebut.

async Task MyAsyncMethod(CancellationToken cancellationToken)
{
    // Check for cancellation
    cancellationToken.ThrowIfCancellationRequested();

    // Continue with the operation
}
Salin selepas log masuk

Contoh Dunia Nyata

Berikut ialah contoh senario dunia sebenar yang biasa: membuat permintaan HTTP secara tidak segerak.

public async Task<string> FetchDataAsync(string url)
{
    using (var httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(url);
        response.EnsureSuccessStatusCode();
        return await response.Content.ReadAsStringAsync();
    }
}
Salin selepas log masuk

Apa Seterusnya?

Menggunakan await dan async Task dalam C# membolehkan anda menulis aplikasi yang responsif dan cekap, terutamanya apabila berurusan dengan tugasan terikat I/O atau jangka panjang. Ia membolehkan anda memastikan aplikasi anda responsif dan meningkatkan keseluruhan pengalaman pengguna dengan membenarkan berbilang tugasan dijalankan serentak tanpa menyekat urutan utama.

Atas ialah kandungan terperinci C# | Pengaturcaraan tak segerak dengan [async | menunggu | Tugasan]. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!