|
|
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
В программе, в определенный момент, перестают отображаться хинты. Дебаг привел к методу Код: pascal 1. 2. 3. 4. 5. 6. 7. вызывается SetTimer, FTimerHandle <> 0, но HintTimerDelegate не вызывается. В чем может быть проблема? Как вообще работает SetTimer когда ему передают нулевое окно? Тоже через сообщения? С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 16:05 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
А TApplication.StartHintTimer в потоке, в котором создался TApplication вызвался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 16:41 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
YuRockА TApplication.StartHintTimer в потоке, в котором создался TApplication вызвался?Конечно. Это стандартный механизм VCL. Я только подвожу мышу к кнопке. Меня прежде всего интересует ответ на вопрос _Vasilisk_Как вообще работает SetTimer когда ему передают нулевое окно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 17:36 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Как вообще работает SetTimer когда ему передают нулевое окно? Тоже через сообщения? Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 17:46 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДа.А кому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 17:54 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_А кому? Что, "кому"? MSDNWhen you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread , even when you use TimerProc instead of processing WM_TIMER. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2019, 18:23 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_В чем может быть проблема? Как вообще работает SetTimer когда ему передают нулевое окно? Тоже через сообщения? это в отладчике видно, по стеку вызовов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 09:54 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ , несколько ссылок нагуглилось, вдруг какая поможет: SetTimer() Win32 function is not calling callback function https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/cf27cbc2-e27e-4b97-8318-890ebc8049ff/settimer-win32-function-is-not-calling-callback-function?forum=windowssdk SetTimer Callback is Never Called https://stackoverflow.com/questions/7250034/settimer-callback-is-never-called ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 11:36 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
Кроик Семёнвдруг какая поможет:Нет. Есть подозрение, что моя проблема в забивании очереди сообщений. И низкоприоритетный WM_TIMER не пролазит. Потому, что все ломается когда идет массовая отправка сообщений главному окну Хотя обычный TTimer запущенный параллельно - срабатывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 15:46 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
у TTimer'a создается свое внутреннее как-бы-окно FWindowHandle := Classes.AllocateHWnd(WndProc); и используется SetTimer(FWindowHandle, 1, FInterval, nil) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 15:58 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Есть подозрение, что моя проблема в забивании очереди сообщений.Не понимаю. В процессе отправки сообщений в TApplication.ProcessMessage приходит куча сообщений с Msg.hwnd = 0 и Msg.Message = WM_TIMER. Но все по другим коллбэкам. По коллбэку HintTimerDelegate сообщения появляются только по завершении моей работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 16:02 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
и еще вот такой ответ был по первой ссылке из моего поста выше: MattiasWhen you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER . Since you don't have a message pump, it's not surprising that your TimerProc isn't called. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 16:05 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
кстати, может в SetTimer первым параметром поставить не 0, a, например, хэндл MainForm.Handle попробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 16:07 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
неважно какого окна, любого на самом деле, исключительно ради бонуса "dispatch messages" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 16:10 |
|
||
|
Не срабатывает SetTimer
|
|||
|---|---|---|---|
|
#18+
Кроик Семёнкстати, может в SetTimer первым параметром поставить не 0, a, например, хэндл MainForm.Handle попробовать _Vasilisk_Это стандартный механизм VCL.Все методы находятся в модуле Forms Кажется проблема не в несрабатывании таймера, а в его сбросе. Не пойму от чего. А отлаживаться очень сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2019, 18:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39761593&tid=2039909]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 457ms |

| 0 / 0 |
