AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Auf Thread warten ohne Programm zu blockieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Thread warten ohne Programm zu blockieren

Ein Thema von BAMatze · begonnen am 29. Sep 2009 · letzter Beitrag vom 29. Sep 2009
 
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Auf Thread warten ohne Programm zu blockieren

  Alt 29. Sep 2009, 14:31
Also ich hab erstmal folgendes gemacht, wobei ich mir schon selber fast sicher bin, dass dies NICHT wirklich macht, was ich möchte.

Delphi-Quellcode:
case (FiComport > 0) of
        true: begin
                //Quellcode
              end;
        false: begin
                  if ChangedComportList.Count > 0 then
                    begin
                      for i := 0 to ChangedComportList.Count - 1 do
                        begin
                          if strtoint(ChangedComportList[i]) > 0 then
                            begin
                              MMC_COM_open(strtoint(ChangedComportList[i]),Bautrate);
                              FConnectionTest := TConnectionThread.create(strtoint(ChangedComportList[i]));
                              FConnectionTest.OnConnected := SetComport;
                              FConnectionTest.OnTimeOut := TimeOut;
                              //FConnectionTest.OnConnected := Form2.TischConnection;
                              FConnectionTest.WaitFor; // <-- Hier bin ich mir nicht wirklich sicher, ob dies das Programm dazu veranlasst zu warten, bis der Thread beendet ist.
                              if FiComport > 0 then
                                begin
                                  result := true;
                                  Break;
                                end
                              else MMC_close;
                            end;
                        end;

                    end;
                end;

// Hier auch nochmal die geänderte Execute-Funktion des Threads
procedure TConnectionThread.Execute;
var bConnected: boolean;
    c1, c2, i: integer;
begin
  bConnected := false;
  c1 := GetTickcount;
  repeat
    for i := 1 to 2 do
      begin
        MMC_setDevice(i);
        if MST_moving = 1 then bConnected := true;
      end;
    if not bConnected then
      begin
        for i := 1 to 2 do
          begin
            MMC_setDevice(i);
            MMC_SendCommand('FE2');
          end;
      end;
    c2 := getTickCount;
  until (abs(c2-c1) > TestTime) or bConnected;
  if bConnected then doConnected;
  if abs(c2 - c1) > TestTime then doTimeOut;
end;
Tja vieleicht kann jemand der sich damit besser auskennt mal das anschauen und mir sagen, ob der Thread jetzt wirklich wartet. Ich selber werde versuchen dies mal zu testen.

BAMatze
2. Account Sero
  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 10:20 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