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?