Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Application.ProcessMessages über Synchronize in Thread erlaubt?

  Alt 29. Jun 2012, 09:41
Zitat:
btw. CoInitialize und CoUninitialize benutzt du aber schon?
Aber ich bitte dich, das ist ja wohl selbstverständlich! *Überall schnell einfüg*
^-- Hatte ich bisher nur verwendet, wenn ansonsten ne Fehlermeldung kam. Bei den Ado-Komponenten in einem Thread hab ich bisher noch nicht dran gedacht, sollte bei ActiveX/COM aber natürlich selbstverständlich sein :/

Zitat:
Benutzt du im Thread die gleiche ADOConnection wie im Hauptthread?
Bevor der Thread mit Resume gestartet wird ( bei Create war CreateSuspended = True), setze ich eine StringVariable für den ConnectionString. In Execute werden dann erst die TAdoConnection und das TAdoQuery erzeugt, und AdoConnection.Connectionstring = Variable gesetzt.

OnTerminate ist mir irgendwie nicht so ganz geheuer. Bei einem Thread der in Schleife läuft und nur durch den MainThread mit ".Terminate" beendet werden kann, da befürchte ich dass das Event zu früh kommen könnte (also z.B. wenn ich den Befehl .Terminate aufrufe, und nicht, wenn Execute die letzte Zeile abgearbeitet hat). Und bei FreeOnTerminate existiert das Callback-Objekt vielleicht schon nicht mehr, oder wenn OnTerminate auf eine Prozedur vom eigenen Thread geht, dass dieser schon wegen FreeOnTerminate freigegeben wurde, und die dem FreeOnTerminate-Ereignis zugewiesenen Prozedur kann nicht ausgeführt werden, das das Objekt (der Thread) schon freigegeben wurde. Nennt mich übervorsichtig, aber im Laufe der Jahre habe ich das Vertrauen in solche "Selbstverständlichkeiten" verloren. Wenn jemand mir garantiert, dass das mit FreeOnTerminate nicht der Fall ist, wäre das natürlich eine gute Alternative
  Mit Zitat antworten Zitat