Task sınıfı
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
-
Task<int> oluştur
Task<int> t = Task.____(42);Cevabı göster
Task<int> t = Task.FromResult(42); -
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
-
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.