Blog
.NET CancellationToken Rehberi
- 22 Mart 2024
- Yayınlayan: svahabi
- Kategori: Blog Yazıları
Gelişen teknoloji dünyasında, yazılım geliştiricilerin kullanıcı taleplerine hızlı ve etkin bir şekilde yanıt verebilmeleri büyük önem taşır. Asenkron programlama, bu ihtiyacı karşılamada kritik bir rol oynar; ancak, uzun süren işlemleri yönetmek ve gerektiğinde iptal etmek için etkili mekanizmalara ihtiyaç duyarız. İşte burada .NET’in CancellationToken yapısı devreye girer.
CancellationToken Nedir?
CancellationToken, .NET Framework’ün bir parçası olarak asenkron ve diğer uzun süren işlemlerin iptal edilmesini sağlayan bir yapıdır. Temelde, bir işlemin başlatılmasından itibaren herhangi bir noktada güvenli bir şekilde iptal edilmesine olanak tanır. Bu yapı, özellikle kullanıcı arayüzü (UI) yanıtlılığını korumak ve gereksiz kaynak tüketimini önlemek için hayati öneme sahiptir.
CancellationToken’ın Kullanımı
CancellationToken, System.Threading
ad alanı altında bulunur. İptal işlemleri, genellikle bir CancellationTokenSource
(CTS) nesnesi kullanılarak yönetilir. CTS, iptal talebini yaymak için bir veya daha fazla CancellationToken sağlar.
CancellationTokenSource Oluşturulması
Bir iptal işlemi başlatmak için öncelikle bir CancellationTokenSource nesnesi oluşturulur:
var cancellationTokenSource = new CancellationTokenSource();
Bu nesne, asenkron metodlara iletilmek üzere bir CancellationToken oluşturabilir.
Asenkron Metodlarda CancellationToken Kullanımı
Asenkron metodlar genellikle bir CancellationToken parametresi alır. Bu, metodun içinde, belirli kontrol noktalarında, iptal talebinin kontrol edilmesi için kullanılır:
public async Task LongRunningOperation(CancellationToken cancellationToken)
{ for (int i = 0; i < 1000; i++) { cancellationToken.ThrowIfCancellationRequested(); // Uzun sürecek işlem… } }ThrowIfCancellationRequested
metodu, iptal talebi gelmişse bir OperationCanceledException
fırlatır, bu sayede işlem güvenli bir şekilde sonlandırılır.
Iptal Talebi Gönderilmesi
Bir kullanıcı işlemi iptal etmek isterse, CancellationTokenSource
üzerinden iptal talebi gönderilir.
cancellationTokenSource.Cancel();
Bu işlem, ilgili tüm CancellationToken’ları etkiler ve ThrowIfCancellationRequested
metodunun çağrıldığı yerlerde OperationCanceledException
fırlatılmasına neden olur.
İleri Düzey Kullanımlar
CancellationToken, sadece asenkron işlemleri iptal etmekle kalmaz, aynı zamanda birden fazla görevin koordinasyonunda da kullanılabilir. Örneğin, birden fazla asenkron görevin aynı CancellationToken ile başlatılması, tek bir iptal talebi ile tüm görevlerin iptal edilmesini sağlayabilir.
Sonuç
.NET’in CancellationToken yapısı, modern yazılım geliştirmede önemli bir rol oynar. Kullanıcı deneyimini iyileştirmek, kaynakları etkin kullanmak ve yazılımın yanıtlılığını artırmak için asenkron işlemlerin yönetilmesinde kritik bir araçtır.