Thread - in Modelbahnsteuerung
Hallo, ich schreibe ein program zur steuerung einer Modellbahn.
Jetz soll das Programm im Hintergrund eine procedure ab-arbeiten. Da habe ich gedacht ich versuche es mal mit einem Thread. Hiermit habe ich aber bisher keinerlei Erfahrung. Mein Programm : (ich habe nur die Daten hier rein geschrieben die hierfur wichtig sind)
Delphi-Quellcode:
Im Program wird die procedure
TFahrstrasse = class
private public Procedure EreignisseListeErstellen; End; Var FahrstrassenListe[1..10] of of TFahrstrasse; FahrstrassenListe[x].EreignisseListeErstellen aufgerufen und diese schreibt Ereignisse als String in eine Listbox. Wie kan ich jetzt ein Thread starten der innerhalb der Fahrstrasse alle Ereignisse ab-arbeitet und sich dan wieder beendet. So das wenn gleichzeitig mehrere Fahrstrassen gesetzt sind, auch mehrere Thread nebeneinander laufen. Als beispiel habe ich diesen code probiert.
Delphi-Quellcode:
Es funktioniert auch aber wie kan ich der Function UnserThread eine Variabele,
var ThreadID: DWORD; //Thread-ID
ThreadHandle: THandle; //Rückgabewert von CreateThread function UnserThread(zahl: integer): LongInt; stdcall; var i : integer; begin // Sleep(200); For i:= 1 to 400 do Form1.Memo1.Lines.Add('UnserThread ' + intToStr(i)); Form1.Memo1.Lines.Add('UnserThread ist fertig'); Result:=0; end; procedure TGleisplanForm.Button1Click(Sender: TObject); begin ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@UnserThread), nil, 0, ThreadID); if ThreadHandle<>0 then CloseHandle(ThreadHandle); End; zb. FahrstrassenListe[1] zuweisen. [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
Re: Thread - in Modelbahnsteuerung
Kannst du bitte noch die Delphi-Tags setzen? Dann kann man das alles besser lesen.
Vielleicht solltest du dir mal das Thread-Objekt von Delphi anschauen. Da kannst du einfach von TThread ableiten und hast es einfacher mit der Variablen-übergabe, als das du nur am Pointer übergeben bist. |
Re: Thread - in Modelbahnsteuerung
Du hast einen freien Parameter (der heißt bei dir Zahl und wird derzeit bei CreateThread mit 0 belegt). Dort kannst du natürlich auch einen Pointer zu einem Objekt reinlegen.
Nimm anstatt CreateThread besser BeginThread. Dadurch wird der Speichermanager von Delphi Threadsicher und du kannst das "stdcall" weglassen. Und noch besser ist, wie bereits beschrieben, TThread zu benutzen. Beachte, dass du aus dem Thread niemals VCL-Sachen oder globale Variablen verwenden darfst (also kein Form1) |
Re: Thread - in Modelbahnsteuerung
Danke erstmal, ich werde es mal mit TThread versuchen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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