написано что-то матерное?
procedure TApplication.QueueAsyncCall(const AMethod: TDataEvent; Data: PtrInt);
var
lItem: PAsyncCallQueueItem;
begin
if AppDoNotCallAsyncQueue in FFlags then
raise Exception.Create('TApplication.QueueAsyncCall already shut down');
New(lItem);
lItem^.Method := AMethod;
lItem^.Data := Data;
lItem^.NextItem := nil;
System.EnterCriticalsection(FAsyncCall.CritSec);
try
with FAsyncCall.Next do begin
lItem^.PrevItem := Last;
if Last<>nil then begin
assert(Top <> nil, 'TApplication.QueueAsyncCall: Top entry missing (but last is assigned)');
Last^.NextItem := lItem
end else begin
assert(Last = nil, 'TApplication.QueueAsyncCall: Last entry found, while Top not assigned');
Top := lItem;
end;
Last := lItem;
end;
finally
System.LeaveCriticalsection(FAsyncCall.CritSec);
end;
if Assigned(WakeMainThread) then
WakeMainThread(nil);
end;
Стикер
Это то я понял и перевел. Но вот проверки в коде первого элемента на пустоту не нашел
Обсуждают сегодня