Здравствуйте) В общем создается поток с рекурсивной функцией поиска файлов. Я сделал флажок, который проверяется в потоке перед тем,как происходит рекурсия. Должно работать так,когда надо прибить поток устанавливает этот флажок и поток соответсвенно должен завершится. но на практике этот поток просто зависает и все(
Код (Text): invoke FindFirstFile,addr fBuffer,addr wfd .if eax==INVALID_HANDLE_VALUE ret .endif mov hSearch,eax Repeate: cmp fExitFindFiles,1 ;проверяем флажок je Quit invoke lstrcmpi,addr szPoint,addr wfd.cFileName je FindNext invoke lstrcmpi,addr sz2Point,addr wfd.cFileName je FindNext invoke lstrcpy,addr fBuffer,PathName invoke lstrlen,addr fBuffer lea edi,fBuffer add edi,eax xor eax,eax mov esi,edi dec esi lodsb cmp eax,'\' je @f mov al,'\' stosb mov al,0 stosb @@: invoke lstrcat,addr fBuffer,addr wfd.cFileName lea esi,wfd.dwFileAttributes mov eax,[esi] .if ax & FILE_ATTRIBUTE_DIRECTORY pushad push hSearch lea edi,BufferForSearch mov ecx,512 xor eax,eax rep stosb invoke lstrcpy,addr BufferForSearch,addr fBuffer invoke lstrlen,addr BufferForSearch lea edi,BufferForSearch add edi,eax mov al,'\' stosb xor al,al stosb invoke FindFiles,addr BufferForSearch;,hListView pop hSearch popad .endif FindNext: invoke FindNextFile,hSearch,addr wfd cmp eax,0 je Quit jmp Repeate Quit: invoke FindClose,hSearch ret
Код (Text): invoke FindFiles,addr BufferForSearch;,hListView [b] cmp fExitFindFiles,1 ;проверяем флажок je Quit[/b]
Ну или как советовал Cr4sh вызывай ExitThread когда выходить будешь. Код (Text): cmp fExitFindFiles,1 ;проверяем флажок jne nonflag invoke FindClose,hSearch invoke ExitThread, 0 nonflag:
добавил проверку после выхода из рекурсии и все заработало) Код (Text): invoke FindFiles,addr BufferForSearch;,hListView pop hSearch popad cmp fExitFindFiles,1 je Terminate .endif