Einzelnen Beitrag anzeigen

emploi

Registriert seit: 21. Jun 2004
Ort: Ilmtown
40 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Nicht alle Threads werden bearbeitet?! ...

  Alt 22. Aug 2004, 16:41
Hm komisch und irgendwie prägnant für das Problem ist, dass wirklich
zu 90 % die ersten 3-4 Threads bzw deren Index nicht in meiner Listbox
auftreten.

Synchronize wird nur aufgerufen wenn es keine Exception gegeben hat.
weil nur dann ist done = true!

Ich hab die Execute Procedur jetzt mal umgestellt
und jetzt werden auch die threads 0-4 in meiner listbox
angezeigt komischerweise fängt die liste damit immer
an. also immer 0 - 4 in reihenfolge.die nachfolgenden
Indizes die aufgelistet werden sind dann durcheinander.
Kann es sein das es etwas mit den zulässigen Verbindungen
des Servers zu tun hat? 0-4 werden direkt zugelassen
und damit auch als erste fertig während die anderen
danach in der warteschleife (also meine while schleife im
thread) hängen und dann erst nach und nach abgearbeitet werden
können?!

irgendwie ist das alles sehr komisch.

Code:
procedure CheckThread.Execute;
var IdHttp1 : TIdHTTP;
    Request: TStringList;
    MyStream : TMemoryStream;
    done : boolean;
begin
  WHILE NOT(done) DO
  BEGIN
    IdHttp1 := TIdHTTP.Create(nil);
    Request := TStringList.Create;
    MyStream := TMemoryStream.Create;
    TRY
        done := False;
        idHttp1.RedirectMaximum := 15;
        idHttp1.HandleRedirects := True;
        TRY
          IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded';
          Request.Add('&PHPSESSID='+SID);
          IdHttp1.Post(url,Request,MyStream);
          MyStream.WriteBuffer(#0' ', 1);
          MyStream.Position := 0;
          ...
          done := True;
        EXCEPT
        ON Exception DO
           done := False;
        END;
    FINALLY
      MyStream.Free;
      Request.Free;
      IdHttp1.Free;
    END;
  END;
  IF done THEN
      Synchronize(SendUrl);
END;
  Mit Zitat antworten Zitat