CodeBlanks Logo Icon CodeBlanks

Task sınıfı

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

Task ile temsil edilen zaman uyumsuz işlemi öğrenirsin.

Task sınıfı

Task sınıfı, C#'ta arka planda yapılan bir işi temsil eder. Tamamlandığında sonuç döndürmeyen işler için Task, sonuç döndürenler için Task<T> kullanılır. Bir Task henüz çalışıyor, tamamlandı ya da hata vermiş olabilir.

Hemen tamamlanan bir Task üretmek için Task.FromResult(42) yazarsın; bu, gerçek bir bekleme olmadan sonuç verir. Boş bir Task için Task.CompletedTask kullanılır. Bunlar testlerde ve deterministik akışlarda yararlıdır.

Task<T> kullanımı

Bir Task<T>'ın sonucunu almak için await kullanırsın: int n = await t;. Burada t tamamlanınca Result özelliği sonucu verir; await bunu güvenli biçimde açar.

Doğrudan t.Result yazmak senkron beklemeye neden olur; bu, kilitlenmelere yol açabilir. Bu yüzden sonuç her zaman await ile alınır. Hata oluştuysa await istisrayı fırlatır.

Uygulama Task.FromResult ile değer döndür

static Task<int> GetAge() metodunu tanımla. Gövdede Task.FromResult(30) döndür. Main'i static async Task Main yap; int age = await GetAge(); ile sonucu al ve Console.WriteLine(age); ile yazdır.

Örnek çözümü göster
Gövdede return Task.FromResult(30); yaz. Main'de int age = await GetAge(); Console.WriteLine(age);
Örnek çözüm:
using System;
using System.Threading.Tasks;

class Program
{
    static Task<int> GetAge()
    {
        return Task.FromResult(30);
    }

    static async Task Main()
    {
        int age = await GetAge();
        Console.WriteLine(age);
    }
}

Kendini test et

  1. Task<int> oluştur

    Task<int> t = Task.____(42);
    Cevabı göster
    Task<int> t = Task.FromResult(42);
  2. Task üyesini rolüyle eşleştir

    Task.CompletedTask
    Boş, tamamlanmış Task
    Task.FromResult(42)
    Hazır sonuçlu Task
    Task.Run(...)
    İşi havuza gönderir
    Task.Delay(100)
    Zamanlayıcı bekler
  3. Task.CompletedTask neyi temsil eder?

    • Çalışan bir Task'ı
    • İptal edilmiş Task'ı
    • Hata vermiş Task'ı
    • Zaten tamamlanmış boş Task'ı
    Cevabı göster

    Zaten tamamlanmış boş Task'ı — Doğru. Task.CompletedTask tamamlanmış boş bir Task'tır.

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