La classe CancellationTokenSource
est à usage unique et rapide coup d'oeil dans le réflecteur prouve l'utilisation de très probablement des ressources non managées KernelEvent
. Il n'a pas d'outil de finalisation, donc si nous ne jetez pas les GC ne faire que des.
D'autre part, si vous regardez des échantillons sur MSDN Annulation de l'article tous les extraits de code, ne le faites pas, sauf un.
Il semble être difficile de trouver le bon endroit et le temps pour le faire dans le code.
- Vous ne pouvez pas envelopper le code de démarrage de votre tâche parallèle avec
using
si vous ne l'attendez pas. Et il est bon de disposer d'annulation que si vous n'attendez pas. - Bien sûr, vous pouvez ajouter
ContinueWith
sur la tâche avec unDispose
appel, mais ce que le chemin à parcourir? - Qu'en est annulable PLINQ des requêtes, qui ne se synchronisent pas en arrière, mais il suffit de ne somenthing à la fin? Disons -
.ForaAll(x=> Console.Write(x))
? - Est-il réutilisable? Peut réutiliser le même pour plusieurs appels, puis débarrassez-vous avec le composant hôte, disons de contrôle d'INTERFACE utilisateur?
Parce qu'il n'a pas quelque chose comme Reset
méthode pour nettoyer IsCancelRequested
et Token
déposée je suppose que c'est ni réutilisables, donc chaque fois que vous démarrez une tâche (ou une requête PLINQ), vous devez en créer un nouveau. Est-il vrai? Si oui, ma question est quelle est la bonne et de la stratégie recommandée pour traiter Dispose
sur ceux de nombreux CancelationTokenSource
instances?