AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen wann alle Threads beendet wurden

Ein Thema von endeffects · begonnen am 11. Nov 2004 · letzter Beitrag vom 12. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2   
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:05
Hallo,

ich habe leider ein kleines problem mit threads
die ich in einer schleife im hauptprogramm erzeuge,
jeder thread berechnet bestimmte werte und gibt diese
an das hauptprogramm zurück wo sie dann in einer
stringliste gespeichert werden, das funktioniert
auch alles wunderbar, nur leider weiß ich nun nicht genau
wie ich prüfen kann ob alle aktionen die in den x threads
y mal neu berechnet wurden beendet sind und ich somit
die stringliste lokal speichern kann

mein ansatz war nun folgender:

Delphi-Quellcode:
//schleife im hauptprogramm die x threads
//immer wieder mit y neuen daten versorgt

while {????????????????} do
  Application.ProcessMessages;
hat jemand dazu vielleicht eine idee?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:08
nimmst du den vcl thread oder den api thread?
du kannst bei letzterer methode die handles der threads abspeichern und überprüfen, ob es noch existiert oder nicht!
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#3

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:11
das ist eine gute frage, auf die ich leider so gar keine
antwort habe, ich halte mich dabei immer an die beispiele von luckie

die threads erzeuge ich wie folgt:

Delphi-Quellcode:
    Setlength(ThreadArray, StrToInt(edtThreads.Text));
    while Mylist.Count-1 > 0 do
    begin
      for i := 0 to length(ThreadArray) - 1 do
      begin
        ThreadArray[i] := TMyThreads.Create(true);
        ThreadArray[i].FIndex := i;
        ThreadArray[i].FValue := Mylist[0];
        ThreadArray[i].Priority := tpIdle;
        ThreadArray[i].FreeOnTerminate := True;
        ThreadArray[i].Resume;
        Mylist.Delete(0);
      end;
    end;
welche der beiden methoden das nun darstellt weiß ich
eigentlich gar nicht
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:20
MSDN-Library durchsuchenwaitformultipleobjects sollte die Lösung sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#5

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:25
hmm, kann ich leider nichts mit anfangen,
das forum bringt dazu leider auch kaum hilfreiche informationen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:31
Dann kuck in mein Threading Tutorial, da hab eich was dazu geschrieben und ein Demo gemacht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#7

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 19:46
also erstmal danke euch beiden für eure hilfe

luckie ich hab mir gerade nocheinmal deine pdf dazu angeschaut
und da steht nun was von "->Demo: WaitForMultipleObjects",
bezieht sich das jetzt auf den nachfolgenden Beitrag in der pdf
oder gibt es da einen Source zum Download der bei mir nicht aktiv ist?
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#8

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 20:15
naja ich geh mal nun davon aus das es dort keinen source gibt,
leider sind die angaben in deinem tutorial zu hoch für mich,
damit kann ich als nicht informatiker und einsteiger nicht viel anfangen,
auch bei google und in den bekannten delphi foren sind dazu nur brüchstücke
zu finden, aber keine beispiele
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 20:35
Zitat von endeffects:
luckie ich hab mir gerade nocheinmal deine pdf dazu angeschaut
und da steht nun was von "->Demo: WaitForMultipleObjects",
das steht immer am ende eines Kapitels, wenn es dazu Demos mit Source gibt im Archiv.

Zitat:
oder gibt es da einen Source zum Download der bei mir nicht aktiv ist?
Hm, wenn ich mir diese Seite http://tutorials.luckie-online.de so amgucke und speziell diese Zeile:
Zitat:
Klassen_in_Delphi.zip 10-Apr-2004 06:07 206k Klassen Tutorial für Delphi. Version 1.0 [PDF und Demos]
Dann erübrigt sich eigentlich jede Frage.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#10

Re: Prüfen wann alle Threads beendet wurden

  Alt 11. Nov 2004, 20:48
Zitat von endeffects:
nur leider weiß ich nun nicht genau
wie ich prüfen kann ob alle aktionen die in den x threads
y mal neu berechnet wurden beendet sind und ich somit
die stringliste lokal speichern kann
Speicher jeden erstellten Thread in eine TList Klasse. TThread hat ein Ereignis OnTerminate. Wenn's aufgerufen wird, lösche den Thread wieder aus der TList. Jetzt weißt du auch wenn keine Thread's mehr laufen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:18 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