AGB  ·  Datenschutz  ·  Impressum  







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

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 2 von 2     12   
endeffects

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 12. Nov 2004, 15:51
hallo,

ich hab das ganze nun mal mit WaitForMultipleObjects probiert,
allerdings scheint hier nicht wirklich gewartet zu werden =(

mein code ist folgender:

Delphi-Quellcode:
procedure TMainForm.LunchThreadds;
var i: integer; Mylist: TStringlist;
    hndlArray : Array of THandle;
begin
  ...
  //erstmal wird Mylist eingelesen und geschaut ob noch threads laufen
  ...
  Setlength(MyThreadArray, StrToInt(edtThreads.Text));
  Setlength(hndlArray, StrToInt(edtThreads.Text));

    while Mylist.Count-1 > 0 do
    begin
      for i := 0 to length(MyThreadArray) - 1 do
      begin
        MyThreadArray[i] := TMyThreads.Create(true);
        MyThreadArray[i].FIndex := i;
        MyThreadArray[i].FValue := Myylist[0];
        MyThreadArray[i].Priority := tpIdle;
        MyThreadArray[i].FreeOnTerminate := True;
        hndlArray[i] := MyThreadArray[i].Handle;
        MyThreadArray[i].Resume;
        Mylist.Delete(0);
      end;
      //die ersten threads durchlaufen und warten bis diese beendet sind
      //um dann die nächsten threads zu initialisieren
      WaitForMultipleObjects(StrToInt(edtThreads.Text), @hndlArray, True, 60000);
    end;
    Myylist.Free;

end;
jemand eine idee wo nun der denkfehler ist?
  Mit Zitat antworten Zitat
endeffects

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 12. Nov 2004, 16:22
ich hab folgendes tutorial genutzt:
http://www.delphicorner.f9.co.uk/articles/op1.htm

dort steht unter anderem:
Zitat:
Those couple of Windows API functions are called WaitForSingleObject and WaitForMultipleObjects. These two functions are used to wait for objects to enter a signaled state before they return. Okay, what's signaled mean anyway? ... Essentially, when an object is created in Windows, it is given a system assigned state property of sorts. While it is active or in use, it is said to be non-signaled. When it is available, it is said to be signaled.
ich hab das nun so verstanden das solange der thread arbeitet kein "signal" für diesen
thread gesetzt ist, das wäre dann also erst der fall wenn er abgearbeitet wurde
und genau darauf soll ja nun WaitForMultipleObjects warten
  Mit Zitat antworten Zitat
endeffects

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

Re: Prüfen wann alle Threads beendet wurden

  Alt 12. Nov 2004, 20:05
also das problem, wie ich mir sagen lassen habe, lag am dynamischen
array das an die api funktion übergeben wird, folgender
code funktionier nun anscheinend:

Delphi-Quellcode:
procedure TMainForm.LunchThreads;
var
i, hndlArraylength: integer;
Mylist: TStringlist;
hndlArray : Array[0..63] of THandle;
begin
...
//prüfen ob threads laufen und stringliste laden
...
    Setlength(ThreadArray, 64));
    while Mylist.Count > 1 do
    begin
      for i := 0 to length(ThreadArray) - 1 do
      begin
        ThreadArray[i] := TMyThreads.Create(true);
        hndlArray[i] := ThreadArray[i].Handle;
        ThreadArray[i].FIndex := i;
        ThreadArray[i].FValue := Mylist[0];
        ThreadArray[i].Priority := tpIdle;
        ThreadArray[i].FreeOnTerminate := True;
        ThreadArray[i].Resume;
        if Mylist.Count > 1 then
          Mylist.Delete(0)
        else
          break;
      end;
      WaitForMultipleObjects(64, @hndlArray, True, 20000);
    end;
    Mylist.Free;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:07 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