2010-11-18 4 views

Répondre

2

Pourquoi l'utilisation du ctor serait-elle meilleure?

Je peux imaginer utiliser un CancellationToken pour Take() mais pas pour Add().
Ou en utilisant différents jetons. CancellationToken est utilisé pour prendre en charge "l'annulation d'opération".

+0

merci pour votre réponse rapide! Il y a un jeton pour ajouter, puisque vous pouvez spécifier une capacité pour la collection. L'ajout à une collection complète bloquera (ceci est annulable avec le jeton). J'ai supposé qu'il existe un constructeur BlockingCollection prenant un jeton qui est utilisé pour toutes les opérations Add et Take. Je pose cette question parce que je crains que je puisse mal comprendre quelque chose dans le traitement des jetons d'annulation. – thumbmunkeys

+0

Il est piloté par le modèle d'utilisation. L'utilisation de 1 jeton pour Ajouter et Prendre ne serait utile que dans quelques situations. –

+0

ok, merci Henk! – thumbmunkeys

2

c'est un concept plus général qu'une instance d'objet avec un champ booléen signifiant "actif/désactivé". Il supporte la concurrence, la réutilisation d'objets et d'autres scénarios intéressants. Par conséquent, les opérations sont Add() et Take() et chacune d'entre elles peut être longue car la collection est vide ou pleine. Si l'appelant souhaite annuler un appel de méthode à exécution longue, il transmet un jeton et le signale si nécessaire.