请问如何安全中断InternetReadFile?
断网、主机端无响应或其他情况都可能造成InternetReadFile一直等待无响应的现象,并无法正常退出。
见微软文章http://support.microsoft.com/kb/263754/
这时,释放句柄等操作都不能从InternetReadFile的等待中退出来,请问该如何安全的中断它?
我用的是AUHTTP组件,以下是释放代码
- Assembly code
procedure TauCustomHTTP.CloseHTTPHandles;begin if hFile <> 0 then begin CloseHandle(hFile); hFile := 0; end; if hRequest <> nil then begin InternetCloseHandle(hRequest); hRequest := nil; end; if hConnect <> nil then begin InternetCloseHandle(hConnect); hConnect := nil; end; if hSession <> nil then begin InternetCloseHandle(hSession); hSession := nil; end;end;
微软文章所述的用HTTP 1.0的方法显然不适合,因为必须改用户的IE设置才生效,而且,有可能造成无法访问某些网页。
[解决办法]
InternetReadFile执行后,你应该无法干预,只能等待其结果返回,想不出现无响应的话,可以搞一个线程去InternetReadFile