Vergleich der Verwendung von BlockingCollection, ConcurrentBag und List
In WPF-Anwendungen wird empfohlen, ConcurrentBag
durch List<T>
zu ersetzen, um mögliche Einfrierungen durch parallele Vorgänge zu verhindern. In diesem Fall ist jedoch BlockingCollection
eine weitere zu berücksichtigende Option.
BlockingCollection-Erklärung
BlockingCollection
ist im Wesentlichen ein Wrapper um eine Sammlung, die IProducerConsumerCollection<T>
implementiert. Es ermöglicht das Blockieren von Entfernungsvorgängen, bis Daten verfügbar sind. Darüber hinaus ist es möglich, eine Obergrenze für die Anzahl der gespeicherten Elemente festzulegen.
Vergleich von BlockingCollection und ConcurrentBag
In dem in der Frage beschriebenen speziellen Fall ist es möglich, mit ConcurrentBag<T>
und BlockingCollection
ein blockierendes gleichzeitiges Paket zu erstellen. Der Hauptunterschied zwischen Standard IProducerConsumerCollection<T>
und BlockingCollection
besteht in der Entfernung von Blockierungsversuchen und der Durchsetzung einer Obergrenze für die Anzahl der Elemente.
Im gegebenen Szenario ist jedoch keine Sperrung oder Durchsetzung der Obergrenze erforderlich. Die Verwendung von BlockingCollection
fügt in diesem Fall eine Ebene unnötiger, ungenutzter Funktionalität hinzu.
Fazit
Obwohl BlockingCollection
ein vielseitiges Tool ist, ist es nicht die am besten geeignete Option in dem spezifischen Szenario, in dem empfohlen wird, ConcurrentBag
durch List<T>
zu ersetzen, um mögliche Einfrierungen bei parallelen WPF-Vorgängen zu beheben.
Das obige ist der detaillierte Inhalt vonBlockingCollection vs. ConcurrentBag in parallelen WPF-Anwendungen: Welche Sammlung sollte ich verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!