AGB  ·  Datenschutz  ·  Impressum  







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

Thread pausieren lassen und aufwecken

Ein Thema von Quo · begonnen am 18. Feb 2008 · letzter Beitrag vom 19. Feb 2008
 
Quo

Registriert seit: 18. Feb 2008
6 Beiträge
 
#7

Re: Thread pausieren lassen und aufwecken

  Alt 19. Feb 2008, 16:10
Zitat von Muetze1:
Ein paar Fragen zu deinem Code:

1. Warum definierst du den Constructor deines Threads als virtuell?
2. Warum setzt du FreeOnTerminate vor dem Inherited Aufruf im Constructor?
3. Warum deklarierst du eine virtual abstrakte Methode, wenn es keine Ableitung von dem Thread gibt?
4. Wieso greifst du unsynchronisiert auf die Form und deren Komponenten zu?
5. Warum verwendest du die globale Form1 Variable anstatt z.B. eine richtige Instanz dem Thread zu übergeben?
6. Wozu deklarierst du ein Sender: TObject in deinem Thread?
7. Warum benutzt du globale Variablen in dem Thread?
8. Warum vergleichst du eine boolsche Variable auf explizit auf true?
9. Warum legst du den Thread suspended an um ihn dann sofort loslaufen zu lassen?

Das Beispiel, was ich hier reingepostet habe, war eigentlich ein testprogramm,
ich versuchte an einem einfacheren Beispiel zu verstehen, wie das ganze funktioniert.
Aber nach eueren Antworten sehe ich, dass die sache mit der Checkbox ein totales blödsinn von mir war.


In wirklichkeit geht es um ein gerät, das mittels serielle schnittstelle mit meinem programm verbundet ist. An das gerät sende ich in einer unendlichen schleife ein Kommando, was sein Status abfrägt und ein Kommando , was die messdaten am display anfordert.
Dieser Schleife ist in einem TTread verkapselt. Das gerät hat zwei Status-Modi...
Wenn ich Status-1 abfange, will ich aus der schleife raus, etwas machen, z.B andere Kommandos an gerät senden und von ihm daten empfangen. Wenn diese Porcedure fertig ist, will ich dass die Schleife die Status abfrägt, weiter läuft.

Wozu das ganze..so kann ich z.B Tasten-Drück am gerät abfangen und gleichzeitig aktuelle Display -Werte in meinem porgramm zu sehen bekommen.

ich habe das ganze bis jetzt ohne suspend ....mit einer StopVariable von typ boolean erledigt

es läuft aber irgendwie unsicher...manchmal wenn ich auf dem Form StopTaste oder StartTaste klicke
springt der Fokus sofort auf die andere TAste dann wieder zurück...

Was ich wollte, dass procedure TMyThreads.Execute sich von alleine schlafen legt und wenn der Code in proceduren
Form1.StartTasteClick(Sender) und Form1.StopTasteClick(Sender) bis zur Ende durgelaufen ist..dann weiter läuft.

Delphi-Quellcode:
procedure TMyThreads.Execute;
var

  Label 10,20,30;
begin

Form1.Edit11.Text:='Ende';

while(not Terminated)do

begin

10:Application.ProcessMessages;

 If StopVariable=true then
  begin
    CP.RTS(1);
    CP.SENDSTRING('sta,g'+chr(13)+chr(10));
    status:=cp.READSTRING();
  
    If trim(Status)='E 01then goto 10;
    If trim(Status)='then goto 10;
    Form1.Edit6.Text:='begin';
    Sleep(100);

   
    If (trim(Status)='04') and (StopJa=true) then
        begin
          Form1.StopTasteClick(Sender);

        end;

      If (trim(Status)='00') and (StopJa=true) then
          begin
          Form1.StopTasteClick(Sender);

          end;

    If (trim(Status)='02')and (StartJa=true) then
            begin
       
                Form1.StartTasteClick(Sender);
            end;
   /// Die letzten aktuellen Messwerten bekommen

20: CP.SENDSTRING('dis,g'+chr(13)+chr(10));

    Distanz:=cp.READSTRING();
    Distanz:=trim(Distanz);
If (length(Distanz)<11) or (length(Distanz)>11) then goto 20;

    Sleep(50);

    Test:='okkkkkkkkkkkkkk';

30: CP.SENDSTRING('kmh,g'+chr(13)+chr(10));
    Speed:=cp.READSTRING();
    Speed:=trim(Speed);
 If (length(Speed)<3) and (length(Speed)>5) then goto 30;


    Form1.Edit6.Text:='untennnnnnnnnnn';

    ///*
   
      end ;
    Synchronize(Go);

    end;

end;
  Mit Zitat antworten Zitat
 


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 12:24 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