
ich habe mal wieder ein Problem mit Threads, eigentlich hat es bei meinem letzten Programm gut funktioniert.
Jedoch bei diesem Programm bekomme ich eine Fehlermeldung 'ungültiger Speicherzugriff, Lesefehler an der Adresse 149917696', jedoch sollte doch dieses Problem mit Threads eigentlich nicht auftreten oder?
Bei dem Programm werden Dateien eingelesen, daraus Informationen gezogen und mehrere Datenbankabfragen generiert. Diese datenbankabfragen werden nacheinander ausgeführt und die Ergebnisse jeder Abfrage direkt in eine CSV-Datei geschrieben, die Datenbankabfragen dauern ziemlich lange wobei sich das Programmfenster aufhängt (keine Rückmeldung). Das Programm läuft jedoch weiter und sobald es abgeschlossen ist, ist es auch wieder bedienbar.
An den Thread sollen insgesamt 4 Parameter übergeben werden.
zum einen die SQL-Abfrage, der Dateipfad wo zu lesende Datei liegt, der Name der Datei, und das Zielverzeichnis der zu erstellenden Datei.
Code: Alles auswählen
Declare Thread(*tData.ThreadData)
Structure ThreadData
thread_sql_abfrage.s
thread_dateipfad.s
thread_dateiname.s
thread_ziel_verzeichnis.s
EndStructure
Code: Alles auswählen
Procedure sql_scripte_erstellen(dateipfad$, dateiname$, ziel_verzeichnis$)
........
sql_abfrage$="Select * From ....."
Define tData.ThreadData
tData\thread_sql_abfrage=sql_abfrage$
tData\thread_dateipfad=dateipfad$
tData\thread_dateiname=dateiname$
tData\thread_ziel_verzeichnis=ziel_verzeichnis$
Thread = CreateThread(@Thread(), tData)
.......
EndProcedure
Code: Alles auswählen
Procedure Thread(*tData.ThreadData)
sql_abfrage_ausfuehren(*tData\thread_sql_abfrage,*tData\thread_dateipfad, *tData\thread_dateiname, *tData\thread_ziel_verzeichnis)
EndProcedure
Code: Alles auswählen
Procedure sql_abfrage_ausfuehren(sql_abfrage$, dateipfad$, dateiname$, ziel_verzeichnis$)
........
........
EndProcedure
Habt ihr eine Idee, was ich machen könnte um den Speicherfehler nicht zu bekommen, ich habe noch etwas von CreateMutex() gelesen, habe aber kein Plan wie man das verwenden soll.
Für jede Hilfe wäre ich sehr dankbar.
