Hallo Sasha,
vielen Dank für Deine rasche Antwort
In verschiedenen Foren/Blogs und Artikel habe ich verschiedene Vorgehensweisen
gelesen und auch schon ausprobiert. Leider funktioniert es nicht so wie ich es
gerne hätte.
Mit einem Pushbutton starte ich das Thread und den Timer
[code] // Timer einschalten
Timer1.Mode = Xojo.Core.Timer.Modes.Multiple
// Thread starten
Thread.Run
[/code]
Im Tread wird eine dBase Datei geöffnent und sequentiell gelesen und
bestimmte Datensätze in einer MariaDB upgedatet bzw. neu angelegt. Diese
Änderungen sollen in einer Listbox und ein Progressbar soll den Fortschritt
anzeigen.
Den Timer den ich gestartet habe soll die UI Anzeige steuern über Shared
Properties, die ich im Thread befülle.
Thread:
[code]…
While Not rs.eof
…
If db.Connect Then
db.SQLExecute(sql_Execute)
End If
If Not db.Error Then
db.Commit
Else
db.Rollback
// Fehlerausgabe
Return
End If
listbox.AddRow
listbox.Cell(listbox.LastIndex,0) = “XYZ”
//Shared Properties um eins erhöhren
iRS_Count = iRS_Count + 1
'App.YieldToNextThread
rs.MoveNext
Wend
App.YieldToNextThread
Timer1.Mode = Xojo.Core.Timer.Modes.Off
[/code]
Timer1:
[code]…
Progressbar.Value = iRS_Count
If iRS_Count > 0 Then
tZeile.Text = iRS_Count.ToText + " / " + iRS_Gesamt.ToText
tZeile.Visible = True
End If
tZeile.Refresh
Progressbar.Refresh
listbox.Redraw[/code]
So sieht im groben meine vorgehensweise aus. Wie bereits beschrieben,
habe ich das Problem mit der Fehlerbehandlung und dem Abschluss des
Threads.
@Sascha S
Erstelle z.B. einen Timer (Modus Off und Period=0) in dem MsgBox(“Fehler beim Schreiben: “+sArtNum+” !”)
ausgeführt wird. (sArtNum z.B. als Property des Fensters übergeben).
Wie könnte das aussehen, das sehe ich momentan nicht ?
@Sascha S
Versuch es mal mit folgendem Ansatz (nur als Anregung zu verstehen):
- Thread holt x Daten
- Thread startet einen Timer
- Der Timer gibt die Daten aus und startet den Thread erneut, damit dieser die nächsten Daten holt
Damit bekomme ich doch eine endlos Schleife mit immer wieder erneuten Aufruf des Threads oder habe ich da einen Gedankenfehler, und der Thread startet nicht neu sondern fährt dort fort an dem er aufgehört hat.