Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thread COM-Objekt mit Callback (https://www.delphipraxis.net/70883-thread-com-objekt-mit-callback.html)

Baeuerle 6. Jun 2006 10:53


Thread COM-Objekt mit Callback
 
Hallo zusammen,

ich habe einen Thread, der verschiedene Instanzen eines COM-Objektes initialisiert. Die Callback-Funktion des COM-Objektes liefert mir den Fortschritt einer Aktion. Der Fortschritt soll auf einem Formular ausgegeben werden.

Das Problem ist, dass das Fortschittsformular zwar angezeigt wird aber nicht aktiv ist!!! Warum???

Ich habe euch hier mal meine vorgehensweise schematisiert:
Delphi-Quellcode:

var ar: array of TtfProgress;

procedure TThread.Create();
begin
AddProgressWindowToArray;
end;

procedure TThread.Execute;
var COM_Find: IFinder;
    COM_Callback: ICallbackObject;
begin
OLEInitialize(nil);
COM_Callback:=CoCallbackObj.Create AS ICallback
COM_Find:=CoFinder.Create(COM_Callback);
COM_Fins.SearchAll('c:\');
end;

procedure TCallbackObject.Callback(FileName: PChar);
begin
ar[FIndex].Show;
ar[FIndex].tlFile.Caption:=Filename;
end;
Bin dankbar für eure Tipps
Baeuerle

Olli 6. Jun 2006 13:10

Re: Thread COM-Objekt mit Callback
 
Ist es nur nicht aktiv, oder wird die Fortschrittsanzeige nicht aktualisiert. Application.ProcessMessages könnte helfen.

Außerdem kommt es u.U. noch drauf an, was in deiner Sync-Methode des TThread-Abkömmlings steht ...

Baeuerle 6. Jun 2006 14:34

Re: Thread COM-Objekt mit Callback
 
thx

but: Application.ProcessMessages wir durchgeführt. Was darf den nicht in der Synchronize stehen???

Olli 6. Jun 2006 15:23

Re: Thread COM-Objekt mit Callback
 
Zitat:

Zitat von Baeuerle
Was darf den nicht in der Synchronize stehen???

Da geht's nicht um dürfen. Prinzipiell wird alles innerhalb von Snychronize() im Hauptthread ausgeführt, es führt also den Sinn von Threads teilweise wieder ad absurdum ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz