2010-11-18 16 views

Antwort

2

Warum sollte der ctor besser sein?

Ich kann mir vorstellen, eine CancellationToken für Take(), aber nicht für Add().
Oder mit verschiedenen Tokens.

+0

danke für deine schnelle antwort! Es gibt ein Token für add, da Sie eine Kapazität für die Sammlung angeben können. Das Hinzufügen zu einer vollständigen Sammlung wird blockiert (dies kann mit dem Token rückgängig gemacht werden). Ich nahm an, dass ein BlockingCollection-Konstruktor ein Token verwendet, das für alle Add- und Take-Operationen verwendet wird. Ich stelle diese Frage, weil ich befürchte, dass ich bei der Handhabung des Löschungs-Tokens etwas missverstehen könnte. – thumbmunkeys

+0

Es wird durch das Nutzungsmuster gesteuert. Die Verwendung von 1 Token für Add und Take wäre nur in einigen Situationen nützlich. –

+0

ok, danke Henk! – thumbmunkeys

2

CancellationToken wird verwendet, um "Operation Cancellation" zu unterstützen. Dies ist ein allgemeineres Konzept als eine Objektinstanz mit einem booleschen Feld, das "aktiv/deaktiviert" bedeutet. Es unterstützt Nebenläufigkeit, Wiederverwendung von Objekten und andere interessante Szenarien.

Also sind die Operationen Add() und Take() und jeder von ihnen kann lange dauern, weil die Sammlung leer oder voll ist. Wenn der Aufrufer die Option zum Abbrechen eines lang andauernden Methodenaufrufs wünscht, übergibt er ein Token und signalisiert es bei Bedarf.

Verwandte Themen