![]() |
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:
[edit=Luckie]Delphi Code-Tags gesetzt. Mfg, Luckie[/edit]
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; |
Re: Thread Frage
Weil dein Thread keine Methode deines Formulares ist.
|
Re: Thread Frage
und wie kann ich das ändern?
|
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