CodeBlanks Logo Icon CodeBlanks

IAsyncEnumerable

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

IAsyncEnumerable<T> ile zaman uyumsuz yinelemeyi öğrenirsin.

IAsyncEnumerable nedir?

IAsyncEnumerable<T>, async olarak akış biçiminde değer üreten bir koleksiyondur. Her öğe bir await ile üretilir; böylece büyük veriyi parça parça işleyebilirsin. Task<List<T>> yerine tüm listeyi beklemek yerine her öğeyi tek tek akıtabilirsin.

Bir metot async IAsyncEnumerable<T> döndürür. Gövdede yield return ile değer üretirsin. Tüketici await foreach ile her öğeyi bekleyerek alır. Bu, özellikle veritabanı ve API akışları için uygundur.

Akış tanımlama

Bir IAsyncEnumerable<T> metodu async ile işaretlenir ve yield return ile değer üretir. Örnek: static async IAsyncEnumerable<int> Numbers() { await Task.CompletedTask; yield return 1; yield return 2; }.

Her yield return bir öğe üretir ve akışı duraklatır; tüketici istediğinde devam eder. await ile her adımda bekleme yapabilirsin; bu, gerçek async senaryolarda giriş/çıkış beklemek için kullanılır.

Uygulama IAsyncEnumerable tanımla ve tüket

static async IAsyncEnumerable<int> Numbers() metodunu tanımla. Gövdede await Task.CompletedTask;, yield return 1;, yield return 2;, yield return 3; yaz. Main'i static async Task Main yap. int sum = 0; await foreach (int n in Numbers()) { sum += n; } ile topla, Console.WriteLine(sum); ile yazdır.

Örnek çözümü göster
Numbers gövdesinde await Task.CompletedTask; yield return 1; yield return 2; yield return 3; yaz. Main'i static async Task Main() yapıp int sum = 0; await foreach (int n in Numbers()) { sum += n; } Console.WriteLine(sum);
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async IAsyncEnumerable<int> Numbers()
    {
        await Task.CompletedTask;
        yield return 1;
        yield return 2;
        yield return 3;
    }

    static async Task Main()
    {
        int sum = 0;
        await foreach (int n in Numbers())
        {
            sum += n;
        }
        Console.WriteLine(sum);
    }
}

Kendini test et

  1. IAsyncEnumerable ne yapar?

    • Bir Task'ı bekler
    • Async olarak değer akışı üretir
    • Bir List<T> döndürür
    • Bir thread başlatır
    Cevabı göster

    Async olarak değer akışı üretir — Doğru. IAsyncEnumerable async olarak değer akışı üretir.

  2. IAsyncEnumerable bildirimini tamamla

    static ____ IAsyncEnumerable<int> Numbers() { await Task.CompletedTask; yield return 1; }
    Cevabı göster
    static async IAsyncEnumerable<int> Numbers() { await Task.CompletedTask; yield return 1; }
  3. IAsyncEnumerable neden kullanılır?

    • Tüm listeyi tek seferde beklemek için
    • Senkron kod yazmak için
    • Büyük veriyi parça parça async işlemek için
    • Thread havuzu yönetmek için
    Cevabı göster

    Büyük veriyi parça parça async işlemek için — Doğru. IAsyncEnumerable büyük veriyi parça parça async işlemek içindir.

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