In welchem Thread bin ich?
Unser Delphi 7 Executable bedient mehrere "Terminalclients" via
TIdTCPServer.CommandHandler0Command.
Nach längerem Einsatz habe ich (durch die Einführung einer ADO-DB Verbindung
und fehlendem CoInitialize) festgestellt, dass dies kein Eventhandler
im VCL-Thread ist.
Während der Laufzeit werden Dinge in ein RichEdit geschrieben, was trotz
fehlendem Synchronize() bisher erstaunlich gut ging. (Solange das Fensterhandle
gültig indem das Fenster sichbar ist, jedenfalls.)
Meine Fragen: 1) Wie kann ich feststellen, dass ich im VCL-Thread bin, damit
das in Zukunft nicht mehr passiert - also sozusagen
ASSERT CurrentThread.IsVCLThread
Falls ich im VCL-Thread bin, ist es ein Problem trotzdem Synchonize aufzurufen?
Sendet die VCL intern eine "Thread-blockierende" Message, (also praktische einen
ganz normalen Methodenaufruf) wenn es der eigene Thread ist, oder sind
Reihenfolgenprobleme zu erwarten? Mit anderen Worten: Kann ich
grundsätzlich via Synchonize in das RichEdit schreiben?
Unser Delphi 7 Executable bedient mehrere "Terminalclients" via
TIdTCPServer.CommandHandler0Command.
Nach längerem Einsatz habe ich (durch die Einführung einer ADO-DB Verbindung
und fehlendem CoInitialize) festgestellt, dass dies kein Eventhandler
im VCL-Thread ist.
Während der Laufzeit werden Dinge in ein RichEdit geschrieben, was trotz
fehlendem Synchronize() bisher erstaunlich gut ging. (Solange das Fensterhandle
gültig indem das Fenster sichbar ist, jedenfalls.)
Meine Fragen: 1) Wie kann ich feststellen, dass ich im VCL-Thread bin, damit
das in Zukunft nicht mehr passiert - also sozusagen
ASSERT CurrentThread.IsVCLThread
Falls ich im VCL-Thread bin, ist es ein Problem trotzdem Synchonize aufzurufen?
Sendet die VCL intern eine "Thread-blockierende" Message, (also praktische einen
ganz normalen Methodenaufruf) wenn es der eigene Thread ist, oder sind
Reihenfolgenprobleme zu erwarten? Mit anderen Worten: Kann ich
grundsätzlich via Synchonize in das RichEdit schreiben?