Sobes.tech
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:

  1. CancellationTokenSource — bir iptal tokenı oluşturur.
  2. CancellationToken'ı bir göreve veya asenkron metoda iletmek.
  3. Görev içinde, token.IsCancellationRequested özelliğini periyodik olarak kontrol etmek veya token.ThrowIfCancellationRequested() çağırmak.
  4. İ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.