Multithread Auslistungen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von BigBen2003.

    Multithread Auslistungen

    Hallo,

    in einer zu erstellenden .net-Anwendung wird eine Auslistung von mehreren Threads gefüllt und ausgelesen.

    In der Microsoft Webseite zum Thema Multithreading und Auflistungen werden verschiedene Methoden aufgelistet.

    Bei allen bisher getesteten Methoden kann nur entweder am Anfang oder am Ende der Werteliste ein Eintrag ausgelesen und aus der Werteliste entfernt werden. Es scheint jedoch keine Methode zu geben, mit der gezielt ein Eintrag an Position X ausgelesen und wahlweise entfernt werden kann.

    Im aktuellen Projekt sind folgende Funktionen wichtig:

    - Erstes Element auslesen und bei Bedarf entfernen
    - am Ende der Werteliste ein neues Element hinzufügen
    - An einer beliebigen Stelle ein Element auslesen und entfernen
    - Anzahl aller vorhanden Elemente ermitteln

    Kennt jemand eine .net-Auflistungs-Klasse die für Multithreads geeignet ist?
    Es ist irgendwo logisch, dass es bei einer Concurrent-Auflistung kein RemoveAt gibt.
    Der Enumerator kann ja jederzeit durch einen anderen Thread beeinflusst werden.

    Du kannst das nur lösen, wenn du eine zusätzliche selbstverwaltete Indexierung einführst.
    Das geht mit einem ConcurrentDictionary.
    Dort hast du einen Key, der dir einen Direktzugriff auf die Elemente ermöglicht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()