SergGur
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору kaz_av, в таком случае, мой вариант вообще будет работать? Я не слишком хорошо знаю, чем отличается обычный таймер от медиа, но в данном варианте я ничего кроме того, что должен делать обычный таймер, не увидел. А в таком случае нигде, кроме как в консольных приложениях, причем именно под Линукс, он и не нужен... Это исходный вариант: Код: procedure TMediaTimer.WaitForInterval; begin TThread.CreateAnonymousThread( procedure var res:TWaitResult; begin while true do begin fEvent.ResetEvent; res := FEvent.WaitFor(fInterval); if res <> TWaitResult.wrTimeout then exit; if Assigned(fOnMediaTimer) then begin TThread.Synchronize(nil, procedure begin fOnMediaTimer(Self); end); end; end; end ).Start; end; | Это мой рабочий вариант: Код: Procedure TMediaTimer.WaitForInterval; Begin TThread.CreateAnonymousThread( procedure Var Res : TWaitResult; Begin While True Do Begin fEvent.ResetEvent; Res := FEvent.WaitFor(fInterval); If Res <> TWaitResult.wrTimeout Then Exit; If Assigned(fOnMediaTimer) Then fOnMediaTimer(Nil) End End).Start End; | |