ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
48211 Топик полностью
Ксения (11.01.2006 17:16, просмотров: 1) ответил Ксения на Multithead надо включать
дополнение... Не уверена, что по делу, но все-таки по случаю скажу. Большинство проблем такого рода возникает от неумеренности использования таймерной процедуры (т.е. CALLBACK функции, которую вызывает операционка с запрошенной периодичностью). Неумеренность заключается в том, программист пытается из этой процедуры писать файлы на диск, что-то рисовать или печатать в окнах и т.п., забывая о том, что должен как можно скорее "освободить" процедуру. При хорошем тоне, в этой процедуре крайне нежелательно запускать действия, которые могут потребовать продолжительного исполнения. А при необходимости таких действий следует взводить флаги, по которым позже, уже в основном потоке произвести необходимые действия. Из таймерной процедуры программа может очень удобно отправлять POSTMESSAGE (этот мессадж не ожидает своего окончания) себе самой с параметрами того, что надо сделать, а обработчик этого POSTMESSAGE эти параметры должен понимать и исполнять. Обычно через параметры передают номер среди пронумерованных возможных вариантов действий, а сами данные через мессадж не передают, закладывая их сразу в переменные. Например, PostMessage(WM_USER, number, 0), а в обработчике стоит switch(number), который переключает на процедуру записи в файл, перерисовку графика или отправление данных по TCP/IP. Тогда таймерная процедура никогда не окажется в сложной ситуации, когда таймер должен запустить ее снова, а еще ее прошлый вариант не успел отработать.