AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit threads und sleep

Ein Thema von UweG. · begonnen am 25. Okt 2003 · letzter Beitrag vom 25. Okt 2003
Antwort Antwort
UweG.

Registriert seit: 15. Okt 2003
Ort: Ruhrgebiet
15 Beiträge
 
Delphi 2 Developer
 
#1

Problem mit threads und sleep

  Alt 25. Okt 2003, 13:53
Hallo,

ich habe folgendes Problem...

Die Applikation befasst sich mit der seriellen Kommunikation mit externen Geräten.

Durch Betätigung bestimmter Button kann der User die Kommunikation einleiten.

Auf ein buttonclickereignis regiere ich mit der Bildung eines Threads der den Ablauf der Kommunikation kontrolliert. Nach Abschluß der Kom. wird der Thread terminiert. (Klappt alles gut)

Jetzt zum Problem

Beispiel
1. erster thread soll erzeugt werden - Kommunikation - Terminierung (button: br1)
2. eine timeoutzeit von ca. 4 Sek. ist notwendig um das externe System zu resetten (sleep (4000))
3. jetzt soll automatisch ein zweiter thread erzeugt werden - Kommunikation - Terminierung (button: bf)


aber: wenn sleep (x) im "Hauptprog" aufgerufen wird, läuft auch der erste tread nicht mehr

Frage : was kann man tun, um im "Hauptprog" ein sleep zu nutzen ohne das threads angehalten werden.
(ich kan natürlich auch über timer, uhrzeit...etc arbeiten, aber das mit den threads und dem sleep-Befehl würd ich halt gerne verstehen)

Code:
  br1click (button1); { Aufruf der Kommunikation }
  sleep (4000);            { hier soll gewartet werden (aber eben nur das Hauptprog)}
  bfclick (button1);       { Aufruf eines weiteren threads }

MfG. Uwe
MfG. Uwe

Nichts hält länger, als ein gutes Provisorium !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem mit threads und sleep

  Alt 25. Okt 2003, 14:12
DELAYDELAY
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit threads und sleep

  Alt 25. Okt 2003, 14:31
Moin Uwe,

das Problem kann ich nicht nachvollziehen.
Ich hab' mir eben mal ein Thread Objekt gebaut, dass zehn Mal alle 500 ms die aktuelle Zeit in eine Datei schreibt.
Den erzeuge ich mit CreateSuspended = false, woraufhin er sofort losläuft und in die Datei schreibt.
Dann kommt ein Sleep, und danach wird so ein Thread erneut erzeugt.
Während der Hauptthread wegen des Sleep wartet, läuft der erste Thread problemlos weiter.

Alles andere hätte mich allerdings auch stark gewundert, da Sleep nur den Thread anhält, in dem der Aufruf erfolgt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
UweG.

Registriert seit: 15. Okt 2003
Ort: Ruhrgebiet
15 Beiträge
 
Delphi 2 Developer
 
#4

Re: Problem mit threads und sleep

  Alt 25. Okt 2003, 15:21
Hallo,

und danke für die schnellen Antworten.

Hier noch mal ein wenig mehr source


Code:

(*
  tloadercom = class (tthread)
  protected
    procedure Execute; override;
    procedure hallo;
    procedure destroy;
  public
    constructor create;
  end;
*)

 procedure TForm1.br1Click(Sender: TObject);
 begin
{ Erzeugung des thread }
   if loadercom <> nil then loadercom. terminate; { loadercom : tloadercom } 
   todostatus := st_erase;
   Form1. buttonaus;
   loadercom := tloadercom. create;

{ irgend ein code }
  {............................
  .............................
  .............................
  .............................}

{ Ende des thread }
   finally
     if not loadercom. terminated then loadercom. terminate;
 end;

..............
  br1click (button1);
  Delay2 (3);          
  bfclick (button1);
  display_string ('bf');

@Luckie:
Das mit dem Delay klappt bei mir nicht.
Selbst mit msec := 3 kommt der Delay erst nach ca. 5-6 Sekunden wieder


@Chris:
Erzeugung meines treads siehe oben
So wie Du das mit dem sleep erklärst habe ich das auch verstanden (dachte ich ).
Ich benutze noch Delphi 2.0 dev. vielleicht liegts daran?

MfG. Uwe
MfG. Uwe

Nichts hält länger, als ein gutes Provisorium !
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit threads und sleep

  Alt 25. Okt 2003, 15:39
Moin Uwe,

ob's mit D2 geht hab' ich jetzt nicht ausprobiert, aber eigentlich dürfte es keinen Unterschied machen.

Was mir aber gerade noch einfällt:
Greifst Du aus dem Thread heraus auf Objekte des Hauptthreads zu?
Das würde zumindest erklären, warum der Thread stehenbleibt solange Sleep den Hauptthread anhält.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
UweG.

Registriert seit: 15. Okt 2003
Ort: Ruhrgebiet
15 Beiträge
 
Delphi 2 Developer
 
#6

Re: Problem mit threads und sleep

  Alt 25. Okt 2003, 15:48
Hallo Chris,

ja, ich habe meine NVC für die V24 im Form1 abgelegt und nutze auch einige Routinen daraus.

Das wird genau die richtige Erklärung sein , böser Fehler von mir.

Dann werd ich das mal umschreiben, danke!

Bis später, Uwe
MfG. Uwe

Nichts hält länger, als ein gutes Provisorium !
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:51 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