Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionszeiger in Thread übergeben sicher? (https://www.delphipraxis.net/128321-funktionszeiger-thread-uebergeben-sicher.html)

klebe7 27. Jan 2009 23:46


Funktionszeiger in Thread übergeben sicher?
 
Hallo,

Ich wollte mal fragen, ob sowas, wie unten ohne Probleme möglich ist oder ob das irgendwelche negativen Auswirkungen auf mein Programm haben kann.

Delphi-Quellcode:

(...)

procedure mythread;
begin
  with TIdHTTP.Create do
  try
    OnRedirect := Form1.HTTPRedirect(...);
    Get(...);
  finally
    Free;
  end;
end;

(...)

for i := 1 to 10 do
  BeginThread(nil,0,@mythread,nil,0,tid);

(...)
(Es werden immer mehrere Threads auf einmal gestartet.)

Ist sowas threadsafe oder sollte man das besser anders machen, wenn ja, wie? :idea:

alzaimar 28. Jan 2009 05:56

Re: Funktionszeiger in Thread übergeben sicher?
 
Winn in der Methode 'Form1.HTTPRedirect' keine VCL-Controls verwendet oder andere threadkritische Geschichten verwendet werden, ist das kein Problem.

sirius 28. Jan 2009 08:02

Re: Funktionszeiger in Thread übergeben sicher?
 
Wie schon gesagt: Es kann Probleme geben.

Aber kann man so einen Request nicht auch schon von den indys her threaded starten? Ich kenn mich mit den indys nicht aus. Aber bei dem Umfang der Bibliothek würde es mich wundern, wenn diese Funktionalität nicht dabei ist.

klebe7 28. Jan 2009 13:11

Re: Funktionszeiger in Thread übergeben sicher?
 
@alzaimar: Ich muss in der Methode aber auf VCL-Controls zugreifen. :(
@sirius: Sowas habe ich leider nicht gefunden. :(

Gibt es keine andere Möglichkeit?

sirius 28. Jan 2009 13:26

Re: Funktionszeiger in Thread übergeben sicher?
 
Du könntest erstmal das Ereignis in dem Thread ankommen lassen und dort dann gezielt über snychronize o.ä. die VCL ansteuern.

klebe7 28. Jan 2009 13:36

Re: Funktionszeiger in Thread übergeben sicher?
 
Danke sirius, so werde ich es dann machen. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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