Hallo zusammen,
ich habe im moment ein phänomen welches ich nicht ganz einordnen kann ... ich arbeite an einem webspider und habe den threadpool und die settings in ein objekt gepackt ... die threads sind in einem dynamischen array und sollen beim callen aus dem mainform in der routine startanalysis erzeugt werden
standard sind als maxwert 100 angegeben
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| for threadcounter := 0 to FMaxThreadCount - 1 do begin FURLAnalyserThreadPool[threadcounter] := TURLAnalyser.Create(FFormHandle,FMaxSleepTime,FMaxRetryCount,FAnalyseURL,FMaxAnalysisItems); FURLAnalyserThreadPool[threadcounter].FreeOnTerminate := true; Delay(FCreationDelay); end; |
nach diesen zeilen kommt noch ein postmessage das die startroutine durch ist .... beim starten der threads suchen die threads die nächste zu analysierende url aus einem tdictionary ...
wenn die einträge im tdictionary = der anzahl der analysierten einträge und die anzahl der aktiven threads = 0 dann rufe ich die routine endanalyses des objektes auf - hier ein auszug
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| for i := 0 to FMaxThreadCount - 1 do begin if FURLAnalyserThreadPool[i] <> nil then begin if FURLAnalyserThreadPool[i].Terminated then begin end else begin FURLAnalyserThreadPool[i].Terminate; end; end; end; |
diese routine läuft komplett durch ... danach gibt es eine AV ... es ist wohl so das die erste routine des startens nicht komplett durchläuft ... unabhängig ob ich delay nutze oder nicht
hat jemand eine idee woran das liegen könnte oder was ich falsch mache ?
Grüßle und Danke,
Andreas