Вобщем требуется посчитать чексумму файла размером 700мб. Вот схема прилож: Code (Text): invoke GetModuleHandle,NULL mov hInstance,eax invoke DialogBoxParam,hInstance,IDC_DLG1,0,ADDR DlgProc,0 invoke ExitProcess,eax DlgProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD ................................... .elseif uMsg == WM_COMMAND ................ .elseif wParam == IDC_BTN1 invoke ПосчитатьХэшФайла, param,param .endif .endif DlgProc endp и после "invoke ПосчитатьХэшФайла, param,param" приложение виснет. как от этого избавиться? PS: даже если вместо "invoke ПосчитатьХэшФайла, param,param" простой цикл на 1-2 мин, всё равно виснет...
Нет. даже если поставить простой цикл на 1-2 мин. тож виснет, тоесть не отвечает на нажатие кнопок но убивается через IDCANCEL
wsd ну да, когда не отвечает опр колич времени на кликания по кнопкам, то подвисает (остаётся пустая рамка проги) и доступно только _ и Х. я так понимаю вы с этим не сталкивались?
Windows следит за тем какое время занимает вызов процедуры окна. Если это время превышает какой-то предел - Windows считает это окно как not responding. Естественно, пока выполняется цикл - программные кнопки (ОК, ...) не реагируют, но [Х] - это системная кнопка и она даёт возможность закрыть "мёртвое" окно. Как кто-то правильно сказал - надо смотреть код подсчёта суммы. Там может быть неоптимизированный код (функция на час или два) или бесконечный цикл. А лучше организовать thread.
согласен. только так. вот, покури этот код, там что-то подобное делается. http://www.koders.com/assembler/fid40764FA42F293FFA86C0D824EDDB2E444C78B6D0.aspx p.s. не пугайся, там много лишнего - тебя должен интересовать момент с CreateThread. И то, как его юзать.
Uri2 Да понятно как юзать, уроки зилиона помогают... непонятно почему виснет, а в WinMain -> WndProc нет...