CodeBlanks Logo Icon CodeBlanks

Özet - Async temelleri

C# kursu · İleri seviye · Ders 6/83

async/await ve Task.Run'u birleştirerek paralel bir dosya okuyucu yazarsın.

Özet - Async temelleri

Bu grupta async/await'in temellerini öğrendin: async bir metodu işaretler, await bir Task'ı bekler, Task ve Task<T> arka plan işini temsil eder. Task.Run ile CPU işlerini havuza gönderirsin; Task.CompletedTask ve Task.FromResult ile deterministik Task'lar üretirsin.

En önemli ders: senkron kodda .Result yerine await kullan; kilitlenmeden kaçın. Şimdi tüm bunları bir araya getiren bir uygulama yazacağız.

Uygulama Async karşılama uygulaması

Bir static async Task<string> Greet(string name) metodu tanımla. Gövdede await Task.CompletedTask ve return "Merhaba, " + name; yaz. Main'i static async Task Main yap. string msg = await Greet("Ayşe"); ile çağır ve Console.WriteLine(msg); ile yazdır.

Örnek çözümü göster
Greet gövdesinde await Task.CompletedTask ve return "Merhaba, " + name yaz. Main'i static async Task Main() yapıp string msg = await Greet("Ayşe"); Console.WriteLine(msg);
Örnek çözüm:
using System;
using System.Threading.Tasks;

class Program
{
    static async Task<string> Greet(string name)
    {
        await Task.CompletedTask;
        return "Merhaba, " + name;
    }

    static async Task Main()
    {
        string msg = await Greet("Ayşe");
        Console.WriteLine(msg);
    }
}

İpuçları

Birkaç ipucu: async metotlar için her zaman Task ya da Task<T> döndür; void'den kaçın. Main'i async Task yapıp doğrudan await kullan. Senkron kodda .Result ya da .Wait() kullanma.

CPU işi için Task.Run, giriş/çıkış için doğrudan async metot çağır. Testlerde deterministik sonuçlar için Task.FromResult ve Task.CompletedTask kullan.

Uygulama Mini uygulama: Async sayaç

Bir static async Task<int> Compute() metodu tanımla. Gövdede await Task.CompletedTask ve return 6 * 7; yaz. Main'i static async Task Main yap. int answer = await Compute(); ile çağır, Console.WriteLine("Yanıt: " + answer); ile yazdır.

Örnek çözümü göster
" + answer);
Örnek çözüm:
using System;
using System.Threading.Tasks;

class Program
{
    static async Task<int> Compute()
    {
        await Task.CompletedTask;
        return 6 * 7;
    }

    static async Task Main()
    {
        int answer = await Compute();
        Console.WriteLine("Yanıt: " + answer);
    }
}

Kendini test et

  1. async bir metot hangi kelime ile işaretlenir?

    • async
    • await
    • Task
    • Run
    Cevabı göster

    async — Doğru. async anahtar kelimesi metodu işaretler.

İleri seviye bölümündeki tüm dersler