AGB  ·  Datenschutz  ·  Impressum  







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

Thread Verständnis Frage

Ein Thema von youuu · begonnen am 18. Nov 2010 · letzter Beitrag vom 18. Nov 2010
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 08:27
Ja da hast du Recht,änder ich gleich, aber das ist leider nicht der auslöser.
Steven
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 08:30
Das vermutete ich auch erst, aber ich hab die schleife laufen lassen von 0 bis 999 und in keinem durchlauf kam eine Rückmeldung via Showmessage aus die KindThreads, als wenn Sie nicht anfangen würden.

Nach einen kleinen sleep, bekam ich allerdings eine Rückmeldung von den KindThreads, wärend des durchlaufs die allerdings nach dem Sleep direkt wieder abgebrochen wurden, ohne das sich der NebenThread Terminiert hatte, da er ja noch durchlief.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#3

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 08:38
ShowMessage nutzt intern einen VCL-Dialog und auf die VCL sollst du doch eh nicht innerhalb des Threads direkt zugreifen

MSDN-Library durchsuchenMessageBox oder eben über Delphi-Referenz durchsuchenTThread.Synchronize

Was genau machst du denn in den Threads?

PS: wenn man den Hauptthread schlafen legt und dann z.B. über Synchronize auf die VCL zugreift, dann muß das natürlich erst warten, bis der Hauptthread wieder läuft, bzw. bis dieser die aktellen Befehle fertig abgearbeitet hat und so wieder Zeit für die Nachrichtenverarbeitung bekommt.

Zeig doch mal den Code von den Threads.
Dem würde ich mich anschließen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 08:47
Hab den Fehler gefunden, ich versuchte in den KindThreads auf eine im Nebenthread erstellte Klasse zu zugreifen, das mochte er anscheinend nicht.
Steven
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 08:49
NebenThread.Klasse.SourceKat:= GetSource(NebenThread.Klasse.slkat[Fo]+'-'+IntToStr(i)); mochte er nicht.
Wie kann ich das besser lösen? Die Klasse im Konstruktor den KindThreads mitgeben?

Ok, nun klappt es sobald ich die Klasse mit gebe im konstruktor.
Allerdings habe ich nun trotzdem ein weiteres Problem, wie kann ich nach Beendigung der sehen, wann alle Threads fertig sind?

Mit OnTerminate eine Methode bauen die im Nebenthread solange läuft bis alle gestarteten Threads zuende sind?
Steven

Geändert von youuu (18. Nov 2010 um 09:03 Uhr)
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 11:04
Ich löse das, indem ich eine globale Variable habe, die mir die Anzahl der gerade laufenden Threads anzeigt. Der Thread erhöht diese im Constructor und erniedrigt sie im Destructor. Mit TCriticalSection den Zugriff absichern (oder InterlockedIncrement / InterlockedDecrement). Oder wie gesagt das OnTerminate-Ereignis ausnutzen (wird im Kontext des VLC-Threads ausgeführt).
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Thread Verständnis Frage

  Alt 18. Nov 2010, 11:16
.. Du könntest die Threads auch in ein TObjectList (OwnsObject = true) stecken.
Die Anzahl der Threads kannst Du dann mit TObejctList.count abfragen, denn die Threads
fliegen dann wenn sie terminieren automatisch aus der TObjectList.

Grüße
Klaus
Klaus
  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 19:00 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