Mit 2 Threads auf ein Datatable zugreifen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Rattenfänger.

    Mit 2 Threads auf ein Datatable zugreifen

    Hallo,

    wie kann ich mit 2 threads gleichzeitig auf ein Datatable zugreifen.

    Der eine Thread soll Daten in das Table schreiben.
    Der andere Thread soll nur auf die Daten zugreifen bzw. auslesen(kein suchen)!

    Jedes mal wenn der code durchläuft, ist das kpl. MDI Parent eingefroren.

    Ich hatte das vorher mit Arrays gelöst, wollte dies aber mit Datatables lösen(da dies um einiges komfortabler ist).

    Gruß
    Die Threads müssen sich gegenseitig blockieren, weil gleichzeitig lesen und schreiben ergibt Chaos.
    Und wenn du währenddessen auch noch die DataTable anzeigst, dann hast du 3 Threads am Wickel, und der Gui-Thread ist dabei noch am anspruchsvollsten.

    Also erzähl mehr und genau, worum es geht, sonst rate ich hier in 5 Richtungen gleichzeitig.
    Genau das Chaos veranstalte ich grad.

    ich habe ein MDI Parent auf der die Dataset's gelegt sind.
    mit form1 zeige ich die Daten an(muss ich aber nicht unbedingt haben) und berechne die Daten, die im Sekunden takt vom Server kommen und schreibe diese ins Datatable.
    in form5 möchte ich die Daten abfragen(auch im Sekunden takt). also direkt zugriff auf Dataset, table, row und item(kein suchen).
    ein zusätzliche klasse soll zukünftig auch noch auf die Daten auch noch zugreifen und nur lesen.
    Geht so nicht.
    Ein gebundenes Dataset ist total langsam.
    Was geht ist, die Daten im Nebenthread ein Stück weit aufarbeiten, und dann an den Main-Thread delegieren, dass der das ins Dataset einpflegt.
    Und auch die Auslesereien: Probier, obs reicht, wenn du mit einem Timer regelmässig was ausliest.

    Wenn das aber zackig gehen muss, ist gebundenes Dataset der Performance-Killer.
    ja, das merke ich immer wieder. nur bei Arrays habe ich das prob. das ich fehlerhafte Daten bekommen habe, da ich diese von der größe beschränckt habe.
    die timer Idee ist gut! zusätzlich werde ich das auswerten der Daten(form5 sowie die zusätzliche klasse) in form1 zusammenfügen(ist möglich). Hier soll form1 dann durch einen kleinen schalter(Timer) Switchen.
    Es ist nicht schlimm wenn die Daten 2-3 Sekunden alt sind.

    Danke!!!