Odysseos
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Maks150988 Цитата: код типа CloseHandle(BeginThread(***)), мне вообще показался такой код странноватым | Строго говоря - Ваш код с промежуточной переменной по сути ничем не отличается от такой записи, всё то же самое - в обоих случаях мы просто говорим ОС, что нам этим потоком управлять не хочется, и ОС должна управлять им сама (а управлять она будет одним способом - принудительно "прибьёт" поток при завершении приложения - причём, не дожидаясь окончания выполнения им своей процедуры, в произвольном месте). Именно для того, чтоб можно было как-то управлять жизнью потока, у объектов класса TThread есть свойство Terminating. Цитата: ... 4.99 (SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL);) 5.211 (EndThread(0)) ... | Отсюда видно, что прирост хэндлов происходит не из-за собственно _создания_ потока, а из-за неких действий внутри процедуры потока - после которых хэндлы не освобождаются. По поводу же процедуры загрузки... Я, честно говоря, WinInet'ом никогда не пользовался, потому - внятно прокомментировать код не могу; вроде, на поверхностный взгляд ошибок с освобождением ресурсов там нет - однако ж хэндлы действительно расходуются... Могу предположить, что для работы WinInet'а инициализируются некие внутренние структуры (причём - не в самом WinInet.pas, а в нижележащем коде самой ОС), для которых и нужны эти самые хэндлы - и они будут автоматически освобождены при завершении приложения. Проверить это предположение просто - надо создать этот поток два-три раза (скажем, повесить его создание на кнопку, и щёлкать по ней), и проверить количество хэндлов при каждом запуске потоке. ...А зачем там два вложенных блока try ... finally с _пустым_ finally? Такой код, конечно, будет работать без проблем - но смысла не имеет. Чтоб тихо "погасить" возможные exception'ы - надо использовать блоки try ... except. | Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 08:40 05-11-2009 | Исправлено: Odysseos, 08:58 05-11-2009 |
|