Asenkron Programlama (Async/Await)
Uygulamanın donmasını engelleyen ve performans artıran asenkron metotların yazımı.
Dosya okuma, web servis çağrısı yapma veya veritabanı sorgulama gibi uzun süren işlemler sırasında ana iş parçacığının (thread) kilitlenmesini engellemek için asenkron programlama kullanılır. C#'ta bu yapı async ve await anahtar kelimesi ve Task sınıfı ile kurulur.
Asenkron Metot Tanımlama ve Çağırma
using System;
using System.Net.Http;
using System.Threading.Tasks;
public class WebReader
{
private readonly HttpClient _client = new HttpClient();
// async: Metodun asenkron olduğunu bildirir. Task veya Task<T> döner.
public async Task<int> GetPageLengthAsync(string url)
{
Console.WriteLine("Veri indirilmeye başlanıyor...");
// await: Uzun süren işlem bitene kadar thread'in başka işler yapmasına izin verir
string content = await _client.GetStringAsync(url);
Console.WriteLine("Veri indirildi.");
return content.Length;
}
}
// --------------------------------------------------
// Program çağrısı
WebReader reader = new WebReader();
int length = await reader.GetPageLengthAsync("https://dotnet.microsoft.com");
Console.WriteLine($"Sayfa karakter boyutu: {length}");