Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Thread Frage (https://www.delphipraxis.net/83150-thread-frage.html)

Felixcate07 28. Dez 2006 12:55


Thread Frage
 
Hallo,

warum kann ich auf Edit1.text nicht zugreifen?? Auch auf Labels oder ähnliches hab ich keinen Zugriff.

Danke

Gruß Tobias



Delphi-Quellcode:
function UnserThread(zahl: Pointer): LongInt; stdcall;
begin
  Sleep(2000);
  Edit1.text := 'fertig';
  Result:=0;
end;


procedure TForm1.Button1Click(Sender: TObject);

var
  ThreadID: DWORD;      //Thread-ID
  ThreadHandle: THandle; //Rückgabewert von CreateThread

begin

  Label1.Caption:='Unser Thread-Testprogramm ist gestartet.';
  Label2.Caption :='Nun erzeugen wir den neuen Thread!';
    Sleep(2000);
  ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@UnserThread),
    nil, 0, ThreadID);

  //wenn der Thread erfolgreich gestartet wurde (ThreadHandle<>0), können
  //wir ThreadHandle wieder freigeben:
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);

  label1.Caption :=('Das Hauptprogramm ist nun am Ende angekommen.');


end;
[edit=Luckie]Delphi Code-Tags gesetzt. Mfg, Luckie[/edit]

Luckie 28. Dez 2006 12:59

Re: Thread Frage
 
Weil dein Thread keine Methode deines Formulares ist.

Felixcate07 28. Dez 2006 13:07

Re: Thread Frage
 
und wie kann ich das ändern?

Luckie 28. Dez 2006 13:14

Re: Thread Frage
 
In dem du den Namen deines Formulares vor das Edit schreibst. Allerdings ist die VCL nicht threadsafe und es ist keine gute Idee aus einem Thread unsynchronisiert auf visuelle VCL Elemente zuzugreifen. Benutze lieber die VCL TThread Klasse und greife auf die VCL Elemete mit der Mthode Synchronize zu.

Desweiteren sollte man nicht CreateThread nehmen, sondern besser BeginThread, da CreateThread Heapzugriffe nicht threadafe macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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-2025 by Thomas Breitkreuz