![]() |
Datenbank: MySQL • Version: 5.5 • Zugriff über: UniDAC 5.1.4
Problem: Update in Thread
Hallo zusammen,
bei mir tritt ein seltsames Verhalten auf, wenn ich ein DB in einem Thread aktualisiere. So lange es String- oder Datumsfelder sind passiert nichts, aber wenn ich JPEG´s von der Platte lade ist die Connection weg (Fehler 10053 Socket error) ... Ich habe die Connection und die Query im Thread etwas weiter vorn in der Execute-Method erzeugt. Hier ein Auschnitt, der läuft. Kommentiere ich das ...LoadfromFile8fFileName) wieder ein knallt es mit dem Fehler. Hat einer Idee, was dort schief läuft ?
Delphi-Quellcode:
Gruß Tom
QueryThread.First;
while (not QueryThread.Eof) and (not Terminated) do begin sDateTime := FormatDateTime(cFormatDT,Now); fFileName := oFldFile.AsString; if FileExists(fFileName) then begin try QueryThread.Edit; oFldUser.AsString := fSQLAccount.User; oFldDate.AsDateTime := Now; // oFldBlob.LoadFromFile(fFileName); QueryThread.Post; inc(fThreadData.PictureOkay); except on E:Exception do begin inc(fThreadData.PictureFailed); fThreadData.Messages.Add(Format('%s - Fehler beim Schreiben der Tabelle "Pictures": %s',[sDateTime,E.Message])); end; end; end else begin inc(fThreadData.PictureFailed); fThreadData.Messages.Add(Format('%s - Bilddatei nicht vorhanden: %s',[sDateTime,fFileName])); end; QueryThread.Next; inc(fThreadData.Counter); if (fThreadData.Counter mod 10 = 0) then Synchronize(UpdateProgress); end; |
AW: Problem: Update in Thread
Kommuniziert das .LoadFromFile() vielleicht über den Haupt-Thread ? Das wäre meine einzige Vermutung, wieso die Connection verloren geht ...
|
AW: Problem: Update in Thread
Da dürfte die Gegenstelle den Abbruch verursachen. Meiner Meinung nach ist die Art, wie Du Bilder in der DB speicherst, nicht korrekt. Wenn ich google, sehe ich immer einen TBlobStream, der verwendet wird.
|
AW: Problem: Update in Thread
Es läuft ja so im normalen Haupt-Thread korrekt. Ich werde deine Anmerkung mal im Sourcecode checken ...
|
AW: Problem: Update in Thread
Wie groß sind die JPEG-Dateien?
|
AW: Problem: Update in Thread
Ich hatte jetzt nicht die Zeit zu prüfen, ob TBlobField.LoadFromFile(...) alles korrekt händelt, aber TBlobStream stammt noch von der BDE (ihgitt) und verlangt ein BDE-DataSet ... nicht gut ! Ich werde noch einmal den Debugger bemühen.
|
AW: Problem: Update in Thread
Zitat:
|
AW: Problem: Update in Thread
Alles zwischen 35 und 400 KB.
|
AW: Problem: Update in Thread
Irgendwo im Datenmodul des jeweiligen Thread fand eine stille Exception statt, die dann wohl wiederum über TWinControl.mainWndProc mit dem Haupt-Thread kommunizierte ... das zerschoss die Connection ! Ich habe jetzt erst einmal die TUniQuery hart verdrahtet, denn irgendwo war wohl ein Fehler im dynamischen Setzen des "SQLUpdate.Text"-Property. Selbst schuld ...
Danke für Eure Mühen ! Gruß Thomas |
AW: Problem: Update in Thread
Du hast diese Query-Instanz aber schon dynamisch im Thread erstellt (so wie auch die Connection-Instanz)?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz