я демонстрирую другую технику работы
invoke EnableMenuItem,hMenu,IDM_START_THREAD,MF_ENABLED invoke EnableMenuItem,hMenu,IDM_STOp_THREAD,MF_GRAYED jmp Threadproc ret
Threadproc ENDp end start
Анализ:
В этом примере я демонстрирую другую технику работы с тредами.
.IF uMsg==WM_CREATE invoke CreateEvent,NULL,FALSE,FALSE,NULL mov hEventStart,eax
mov eax,OFFSET Threadproc invoke CreateThread,NULL,NULL,eax,\ NULL,0,\ ADDR ThreadID
invoke CloseHandle,eax
Вы можете видеть, что я создал объект события и тред во время обработки сообщения WM_CREATE. Я создаю объект события, установленного в состояние "выключено" и обладающего свойством автоматического выключения. После того, как объект события создан, я создаю тред. Тем не менее, тред не начинает выполняться немедленно, так как он ждет, пока не включится объект события:
Threadproc pROC USES ecx param:DWORD
invoke WaitForSingleObject,hEventStart,INFINITE mov ecx,600000000
Первая линия процедуры треда - это вызов WainForSingleObject. Она ждет, пока не включится объект события, а затем возвращается. Это означает, что даже если тред создан, мы помещаем его в спящее состояние.
Когда пользователь выбирает в меню команду "run thread", мы включаем объект события:
.if ax==IDM_START_THREAD invoke SetEvent,hEventStart
Вызов SetEvent включает объект события, после чего WainForSingleObject возвращается и тред начинает выполняться. Когда пользователь выбирает команду "stoр thread", мы устанавливаем значение глобальной переменной в TRUE.
.if EventStop==FALSE add eax,eax dec ecx .else invoke MessageBox,hwnd,ADDR StopString,ADDR AppName,MB_OK mov EventStop,FALSE jmp Threadproc .endif
Это останавливает тред и снова передает управление функции WaitForSingleObject. Заметьте, что мы не должны вручную выключать объект, так как мы указали при вызове функции CreateEvent, что значение bManualReset pавно FALSE.
[C] Iczelion, пер. Aquila.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий