AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread Frage

Ein Thema von Felixcate07 · begonnen am 28. Dez 2006 · letzter Beitrag vom 28. Dez 2006
Antwort Antwort
Felixcate07

Registriert seit: 19. Dez 2006
13 Beiträge
 
#1

Thread Frage

  Alt 28. Dez 2006, 12:55
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]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Thread Frage

  Alt 28. Dez 2006, 12:59
Weil dein Thread keine Methode deines Formulares ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Felixcate07

Registriert seit: 19. Dez 2006
13 Beiträge
 
#3

Re: Thread Frage

  Alt 28. Dez 2006, 13:07
und wie kann ich das ändern?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Thread Frage

  Alt 28. Dez 2006, 13:14
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 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