|
|
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
win32api vc2005sp1, диалоговое приложение. диалог в момент своей инициализации (OnInitDialog) создает поток, в котором реализованы примитивные часы, следующим образом (xDialog и xString мои классы для диалога и строк соответственно, все остальное - секунды, минуты и тд - это int) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. т.е. часики бегут и выводят свое значение на диалог. Если при обработке сообщения WM_DOSOMETHING в классе диалога сделать задержку, то часики перестают ходить. Приложение ведет себя как однопотоковое, т.е. блокируется даже интерфейсный поток диалога, однако, если в момент, когда WM_DOSOMETHING не обрабатывается открыть еще один диалог (любой другой, родительским окном корого будет pDlg) как модальный, то видно что часы считают секунды. Это так и должно быть или я чего-то не понимаю? заранее в реверансе -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 15:31:47 |
|
||
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
ну ёпта. Как написали, так и работает. Что непонятно-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 16:22:09 |
|
||
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > stat_str.Format(_T("%.2dd:%.2dh:%.2dm:%.2ds"), nDays, nHours, nMinutes, nSeconds); > pDlg->SettStatistics(stat_str); .... > Это так и должно быть или я чего-то не понимаю? Так и должно быть: при задержке не обрабатывается WM_PAINT. pDlg->UpdateWindow должно помочь. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 16:33:22 |
|
||
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
teras Cerebrum wrote: > stat_str.Format(_T("%.2dd:%.2dh:%.2dm:%.2ds"), nDays, nHours, nMinutes, nSeconds); > pDlg->SettStatistics(stat_str); .... > Это так и должно быть или я чего-то не понимаю? Так и должно быть: при задержке не обрабатывается WM_PAINT. pDlg->UpdateWindow должно помочь. Posted via ActualForum NNTP Server 1.4 получается что отрисовка времени просто не должна проходить, но почему после того как задержка преодалена счетчик не прыгает на несколько секунд вперед, а продолжает с того места, где затормозил!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 16:36:24 |
|
||
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
насколько я понимаю, поток отослав WM_DOSOMETHING не ждет ее результатов, так ? -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 16:38:37 |
|
||
|
поток какой-то не такой
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > Автор: "Cerebrum" > teras > > Cerebrum wrote: >> stat_str.Format(_T("%.2dd:%.2dh:%.2dm:%.2ds"), nDays, nHours, > nMinutes, nSeconds); >> pDlg->SettStatistics(stat_str); > .... >> Это так и должно быть или я чего-то не понимаю? > > Так и должно быть: при задержке не обрабатывается WM_PAINT. > pDlg->UpdateWindow должно помочь. > Posted via ActualForum NNTP Server 1.4 > > > получается что отрисовка времени просто не должна проходить, но почему > после того как задержка преодалена счетчик не прыгает на несколько > секунд вперед, а продолжает с того места, где затормозил!? Это происходит из-за SendMessage - она ждет завершения обработки сообщения. То есть в приведённом коде через каждый пять секунд часы могут остановиться. На эту тему есть PostMessage. И еще совет - лучше раз в секунду запрашивать время у системы, а не считать интервалы - Sleep гфрфнтирует только минимальное время обработки - то, что он не выйдет раньше чем через секунду. Но максимальное время - ничем не ограничено, и может быть гораздо больше, при загруженной системе, свопировании и т.д. Кстати, если посмотреть на ваш код, но использование отдельного потока выглядит избыточным, точно с таким же эффектом можно пользовать WM_TIMER. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2007, 16:47:46 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028019]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 524ms |

| 0 / 0 |
