Einzelnen Beitrag anzeigen

endeffects

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

Probleme mit Threads und Aufgaben-Pool

  Alt 17. Mai 2005, 18:28
Hallo,

ich habe leider ein Problem mit Threads die sich aus dem
Mainthread mit Aufgaben über Synchronize() versorgen sollen.

Code zum Erzeugen der Threads:
Delphi-Quellcode:
    for Loop:= 0 to length(ThreadArray) - 1 do
    begin
      ThreadArray[Loop]:= TMyThreads.Create(true);
      ThreadArray[Loop].FIndex:= Loop;
      ThreadArray[Loop].Priority:= tpIdle;
      ThreadArray[Loop].FreeOnTerminate:= True;
      ThreadArray[Loop].Resume;
    end;
Im Thread selbst starte ich dann Synchronize um
aus dem MainThread die Aufgabe zu übergeben:

Code aus dem Thread:
Delphi-Quellcode:
    Synchronize(NewJob);

    procedure TMyThreads.NewJob;
    begin
      MainForm.WorkPool(FIndex);
    end;
Sofern noch eine Aufgabe ansteht wird im MainThread
folgende Methode ausgelöst:

Code aus dem MainThread:
Delphi-Quellcode:
procedure TMainForm.WorkPool(Index: integer);
begin
    ....
    ThreadArray[Index].FTodo:= TodoList[TodoCounter];
    ....
end;
Ich hab nun schon eine ganze Weile hin und her geprüft
und die Zuweisung ThreadArray[Index].FTodo:= TodoList[TodoCounter];
aus TMainForm.WorkPool wird definitiv ausgeführt.
Trotzdem kommt es vor das diese beim Thread nicht ankommt.

Momentan bin ich ein wenig ratlos, hat Jemand vielleicht
eine Idee woran das liegen könnte?
  Mit Zitat antworten Zitat