Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Thread (kein TThread) synchrinisieren?

  Alt 30. Aug 2006, 19:17
Die Synchronize-Methode von TThread arbeitet auch mit Windows-Messages.
Delphi-Quellcode:
procedure TThread.Synchronize(Method: TThreadMethod);
begin
  FSynchronizeException := nil;
  FMethod := Method;
  SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self));
  // falls im Kontext des Hauptthreads eine Exception ausgelöst wurde
  // wird sie hier im Kontext ausgelöst
  if Assigned(FSynchronizeException) then raise FSynchronizeException;
end;
Dies scheint wirklich die einzige Technik zu sein, um mit einer VCL (sowie viele Windows API Funktionen) umzugehen, die nicht Threadsicher ist.
Auch COM/DCOM verwendet intern Windows-Messages beim Single-Appartment.
Andreas
  Mit Zitat antworten Zitat