C#
Özet - Async temelleri
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
-
async bir metot hangi kelime ile işaretlenir?
Cevabı göster
async — Doğru. async anahtar kelimesi metodu işaretler.
Sıradaki ders: Task başlatma