Einzelnen Beitrag anzeigen

Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: asynchrone procedureausführung

  Alt 17. Feb 2005, 00:12
[EDIT]
Hab grad gesehen das ich DoOnSignal ja mit Synchronize aufrufen...
Werd mal drüber schlafen und morgen dann weiter dran rumwerkeln.
Falls ihr noch nen Tipp oder nen Tutorial habt wär ich auch dankbar...
[/EDIT]

Danke für die schnelle Antwort aber es funzt nit
Ich hab noch recht wenig (null-) Plan vom Threading.
Habe ich da vielleicht etwas falsch gemacht? -- sicher, or? ...

Hier mein Kot:
Delphi-Quellcode:
constructor TM32Thread.Create(Handle: THandle; Adress: Word; AOwner: TCustomMidi32);
begin
  FOwner := AOwner;
  FAdress := Adress;
  inherited Create(True);
  Priority := tpLowest;//tpTimeCritical;
  FHandle := Handle;
  Resume;
end;

//die Execute procedure:
procedure TM32Thread.Execute;
var
  oldState: Byte;
begin
  repeat
    oldState := FStatus;
    FStatus := PortIn(FAdress);
    if oldState <> FStatus then begin
      Synchronize(DoOnSignal);
    end;
  until Terminated;
end;

//die DoOnSignal procedure:
procedure TM32Thread.DoOnSignal;
begin
  if NOT Configurated then begin
    FRightPedal := FStatus - 16;
    Configurated := True;
    Exit;
  end;
  if FStatus = FRightPedal + 16 then begin
    if Assigned(FOwner.FOnStop) then begin
      FOwner.FOnStop(Self);
    end;
  end else if FStatus = FRightPedal - 16 then begin
    if Assigned(FOwner.FOnPlay) then begin
      FOwner.FOnPlay(Self);
    end;
  end else if FStatus = FRightPedal - 32 then begin
    if Assigned(FOwner.FOnForward) then begin
      FOwner.FOnForward(Self);
    end;
  end else if FStatus = FRightPedal then begin
    if Assigned(FOwner.FOnReward) then begin
      FOwner.FOnReward(Self);
    end;
  end;
end;
  Mit Zitat antworten Zitat