Problem mit LibNoDave und Zugriff aus verschiedenen Threads

Manni01

Level-2
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich benutze die LibNoDave.net.dll mit VB.Net 2010. In einem Thread wird der Header (die ersten 32 Byte) aus einem DB ständig gelesen und geschrieben, so das ich in meiner Anwendung quasi ein Abbild habe. nach jedem Lese/Schreib-Zyklus prüfe ich ob im Header ein bestimmtes Bit auf "1" ist. Sollte dies der Fall sein, so wird ein neuer Thread aufgemacht, und damit eine größere Datenmenge (bis zu 32 kByte) aus dem gleichen DB gelesen (ab Byte 33). Parallel läuft natürlich der erste Thread weiter.

Beide Funktionen laufen für sich einwandfrei. Nur wenn beide Threads gleichzeit laufen, kommt folgender Fehler: Ein Aufrufziel hat einen Ausnahmefehler verursacht.

Mehr ist leider nicht rauszubekommen.

Deshalb nun meine Frage: Kann LibNoDave.net.dll überhaupt mehrere Verbindungen auf den gleichen DB handeln oder gibt es da grundsätzliche Probleme?

Danke für Eure Hinweise...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, jeweils ein eigenes Bytearray. Für den zweiten Thread werden auch komplett neue Instanzen aller Dave-Objekte angelegt. Der Fehler tritt um so häufiger auf, je grösser die Datenmenge im zweiten Thread ist oder je schneller ich die Zyklen im ersten Thread mache. Er tritt bei der IB...Soft-SPS genauso auf, wie bei einer S.-Hardware.
 
Also baust du für den 2ten thread eine komplett neue verbindung auf? Also Ich denke das es mit mehreren threads funktioniert, einige haben meinen protokoller mit Verbindungen zu mehreren SPSen am laufen, und was ich bisher gehört habe läufts. Und Ich nutze in meiner C# Bibliothek (http://siemensplctoolboxlib.codeplex.com) intern auch libnodave und die libnodave.net
 
Problem gefunden!
Fehler lag in meinem Programm: ich hatte versehentlich einen Thread 2 x angestoßen, was zu Dateninkonstistenzen geführt hat (die Tücken des
Multithreading).

Danke für die bisherige Mühe....
 
Zurück
Oben