Thema: Delphi Thread erstellen

Einzelnen Beitrag anzeigen

Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Thread erstellen

  Alt 1. Sep 2006, 13:37
Ich hab mich gestern und heute nochmal intensiv durch eure Vorschläge und Codes durchgearbeitet und ich habs tatsächlich geschafft 3 Threads zum laufen zu bringen
ich hab das ganze auch einfach mit 3 Variabelen die jeweils von einem Thread hochgezählt werden und es hat auch supi funktioniert
nur wie ich den LPT-Portzugriff eingebaut hab (ich versuche nämlich auf 3 DigiPorts vom LPT ein pulsweitenmoduliertes Signal auszugeben) hatte ich den eindruck, dass mein Programm gar nix mehr macht

Delphi-Quellcode:
uses
  HW_Types, HW_32;
[...]
var

  b_LED1_1 : Byte;
  b_LED1_2 : Byte;
  b_LED1_on : Byte;
  b_max: Byte = 40;
  aThreads : TList;

implementation

{$R *.DFM}

uses SyncObjs;

Type


 T_LED1_Thread = Class (TThread)
  Private
    fID : Integer;
  Protected
    Constructor Create (aID : Integer);
    Procedure Execute;Override;
    End;

constructor T_LED1_Thread.Create(aID : Integer);
begin
  Inherited Create (True);
  fID := aID;
  Resume;
end;

procedure T_LED1_Thread.Execute;
begin
  While not Terminated do
  begin
        for b_LED1_1 := 0 to b_LED1_on do
          MainForm.HW32.Pin[2] := false; //not true
      if (b_max - b_LED1_on) > 0 then
        for b_LED1_2 := 0 to b_LED1_on do
          MainForm.HW32.Pin[2] := true; //not false
      Application.ProcessMessages;
  end;
end;

procedure TMainForm.B_OpenDriverClick(Sender: TObject);
begin
  aThreads := TList.Create;
  T_LED1_Thread.Create(0);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
Var
  i : Integer;
begin
  While aThreads.Count > 0 do begin
    With T_LED1_Thread (aThreads[0]) do begin
      WaitFor;
      Free;
      End;
    aThreads.Delete(0);
    End;
  aThreads.Free;
end;
  Mit Zitat antworten Zitat