Bazı asenkron işlemleri yapıyorum ve kullanıcı bunu isterse, bir async görevinin çalışmasını durdurmak için CancellationToken kullanmak istiyorum. Bunu yapmak için doğru işlemi durdurmak için doğru İpliği bulabildiğim bir Sözlüke sahip olmak iyi bir uygulamadır.İptal Jetonu kaynak örneği
public Dictionary<Thread, CancellationToken> CancellationTokenData;
Böylece kullanıcı yanlış değilsem doğru davranması gerektiği bir operasyona iptal isterse: Ne şu anda bakıyorum şudur?
Bunu yapmanın en iyi yöntemleri nelerdir? Örneğin, kullanıcının, bir iş parçacığı {B} kullanılarak veritabanının içindeki bir {A} kümesinde çok uzun süreli bir işlem gerçekleştirdiğini varsayalım. Ardından, işlemi iptal eder ve gider ve başka bir iş parçacığındaki {A} ayarında başka uzun bir işlem kullanır. Geçerli CancellationToken
için global bir değişken kullanmalı mıyım?
Ne istediğinizi anladığımı anlayamıyorum ama iptaller gayet basit ve iş parçacığını takip etmek için hiçbir sebep yok. Bir CancellationTokenSource oluşturursunuz ve belirtecini uzun bir işleme, yani bir iptal belirtecini kabul eden herhangi bir yönteme geçirirsiniz. Istemci, 'kaynağını' iptal etmek için çağırır, kaynak belirteci gösterir, bunu izleyen herhangi bir * işlem * bu incelikle sonlanır. İş parçacığı değil, sonlanan işlem/yöntem. "Geçerli" belirteci yok, aynı belirteci birden çok işlem için geçirebilirsiniz –
@PanagiotisKanavos Tamam, ancak bunu yapmak için yerel bir değişken kullanıyor musunuz? Yerel bir kullanıyorum, çok kısıtlı alıyorum ki yalnızca bunu arayabilirim Şu anki yöntem içinde ve eğer onu küresel bir değişken olarak kullanırsam, işler dağınık olabilir mi? Her biri için bir tane küresel olmalı mı? Umarım aynı yoldayız. – Hristo
Sizi, iş parçacığı arasında bağımlılıklar olduğunu anlıyor musunuz? O zaman elbette onlar için aynı Jetonu kullanmalısınız - ve bir sözlük kullanmanın bir anlamı yok ... –