async metot tanımlama
async metot tanımlamayı ve await ile beklemeyi öğrenirsin.
async metot tanımlama
Bir async metot, bildirimin başına async anahtar kelimesi konularak tanımlanır: static async Task Show(). Gövdede await kullanabilirsin; bu, metodu bekleyenlerden ayrı bir akışta çalıştırır.
Sonuç döndürmeyecek async metotlar Task, değer döndürecekler Task<T> döndürür. void döndüren async metotlardan kaçın; yalnızca olay işleyiciler için kullanılırlar.
async Task Main
C# 7.1'den beri Main metodu async Task olarak bildirilebilir. Bu, programın giriş noktasında doğrudan await kullanmanı sağlar; GetAwaiter().GetResult() gibi sarmalayıcılara gerek kalmaz.
Bildirim: static async Task Main(). await ile çağrılan herhangi bir async metot buradan doğrudan beklenir. Bu, konsol uygulamalarında async denemek için en temiz yoldur.
Uygulama async metot ve async Main
static async Task<string> GetName() metodunu tanımla. Gövdede await Task.CompletedTask ve return "Ayşe"; yaz. Main'i static async Task Main yap; await GetName() ile sonucu al ve Console.WriteLine ile yazdır.
Örnek çözümü göster
Gövdede await Task.CompletedTask ve return "Ayşe" yaz. Main'i static async Task Main() yapıp string name = await GetName(); Console.WriteLine(name);
Örnek çözüm:
using System;
using System.Threading.Tasks;
class Program
{
static async Task<string> GetName()
{
await Task.CompletedTask;
return "Ayşe";
}
static async Task Main()
{
string name = await GetName();
Console.WriteLine(name);
}
}
Kendini test et
-
async metotlar için önerilen dönüş türü nedir?
- Task veya Task<T>
- void
- Thread
- IEnumerable<T>
Cevabı göster
Task veya Task<T> — Doğru. async metotlar Task ya da Task<T> döndürmelidir.
-
async bildirimi tamamla
static ____ Task Show() { await Task.CompletedTask; }Cevabı göster
static async Task Show() { await Task.CompletedTask; } -
async void ne zaman kullanılır?
- Her zaman; async metotlar void döndürmeli
- Yalnızca olay işleyicilerde
- Asla; geçerli değil
- Yalnızca test metotlarında
Cevabı göster
Yalnızca olay işleyicilerde — Doğru. async void yalnızca olay işleyiciler içindir.