Junior — Middle
Sistemde bir görevin yürütülmesini iptal etmek için hangi yöntemler kullanılabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
C#'ta, bir görevin (Task) yürütülmesini iptal etmek için genellikle CancellationToken mekanizması kullanılır. Temel iptal yöntemleri:
- CancellationTokenSource — bir iptal tokenı oluşturur.
- CancellationToken'ı bir göreve veya asenkron metoda iletmek.
- Görev içinde,
token.IsCancellationRequestedözelliğini periyodik olarak kontrol etmek veyatoken.ThrowIfCancellationRequested()çağırmak. - İptal talebinde bulunmak için
CancellationTokenSource.Cancel()çağırmak.
Örnek:
var cts = new CancellationTokenSource();
var token = cts.Token;
var task = Task.Run(() => {
for (int i = 0; i < 100; i++) {
token.ThrowIfCancellationRequested();
// çalışma
Thread.Sleep(100);
}
}, token);
// Görevi iptal et
cts.Cancel();
try {
task.Wait();
} catch (AggregateException ex) {
if (ex.InnerExceptions.Any(e => e is OperationCanceledException)) {
Console.WriteLine("Görev iptal edildi");
}
}
Bu nedenle, iptal kooperatif bir süreçtir ve görev, iptal tokenını kontrol etmeye devam etmelidir.