Вообще, тут надо просто отладить, непонятно на каком шаге AV возникает, что при этом в логах, что делает в это время поток который должен разбудиться.
Вангую, что в
- Код: Выделить всё
FScheduler^.Suspended
Это нужно обязательно проверить
[Дополнение]
Действительно, на такую мелочь и внимания не обращал. Все заработало.
плюс код присваивания FSheduler
- Код: Выделить всё
procedure TTaskScheduler.CreateTaskThread(TaskItem:TTaskItemPTR; AwakeMe:boolean); //not tested
var
NewTask:TTaskThread;
Delay:Longint;
begin
NewTask:=TTaskThread.Create(true);
NewTask.FreeOnTerminate:=FALSE;
NewTask.AwakeScheduler:=AwakeMe;
NewTask.TaskItem:=TaskItem;
NewTask.FScheduler:=@Self; //<-
....
NewTask.Delay:=Delay;
NewTask.Start;
Всем спасибо.
