![]() |
IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
Hallo zusammen,
ich habe einen Thread, der beinhaltet eine Komponente TIdHTTP. Der Thread bekommt eine Datei mitgeteilt, die runtergeladen werden soll und die TIdHTTP Komponente kümmert sich darum. Ich würde gerne den Forschritt irgendwo anzeigen (z.B. Progressbar). Meine Frage ist nur, sind die Events für den Forschritt ThreadSafe?
Delphi-Quellcode:
Oder soll ich bei den Events über einen Timer entkoppeln bzw. Synchronize nutzen?
procedure OnIdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
procedure OnIdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); procedure OnIdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode); Viele Grüße Alex Edit: Vergesst die Frage. Natürlich muss ich es entkoppeltn oder über Synchronize machen wenn ich aus dem Thread auf die VCL zugreifen will. Hat ja nix mit Threadsafe zu tun... Hat sich also erledigt |
AW: IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
Die Frage lässt sich immer ganz simpel selber beantworten:
Delphi-Quellcode:
;)
if MainThreadID = TThread.CurrentThread.ThreadID then
// ohne Sync else // mit Sync PS: Da bei den Indys oft auch noch Threads innerhalb benutzt werden, kann man es da niemals mit Bestimmtheit sagen (ohne den Code auseinanderzunehmen), ob die Events im Kontext des aufrufenden Threads erfolgen oder schon synchronisiert. Darum im Zweifelsfall immer vor dem Synchronize prüfen. |
AW: IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
siehe Edit ;-)
Schon klar. Frage hätte ich mir schenken können :-D |
AW: IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
Zitat:
|
AW: IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
Zitat:
Im Unterschied zu Synchronize ist TThread.Queue nicht blockierend, der Thread wird 'sofort' fortgesetzt. |
AW: IdHTTP OnWork/OnWorkBegin/OnWorkEnd ThreadSafe?
.. irrelevanter eigener Beitrag :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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