自己的一个程序,需要下载某一个页面,然后分析这个页面的内容,再做进一步的操作,操作完了再去下载这个页面,如此反复。但发现,在使用一段时间后,会导致所有需要访问网络的在某一个不确定的时候段内”假死“,把我的脚本退出后,其他访问网络的程序运行正常。
检查代码时发现,我在用了INetGet()后没有使用INetClose()进行关闭。于是,加上了INetClose()来释放网络资源,但问题是,一段时间后,又会出现上一段中描述的现象。
为了排除INetClose()无效的可能,写下了如下代码Dim $InetGet = 0;初始化inetget函数返回值,其实也没什么必要
$InetGet = InetGet("http://www.baidu.com/", "baidu.html", 1, 0);强制后台下载百度首页到本地度命名为haidu.html,下载完后再运行后面的语句
If $InetGet == 0 Then
MsgBox(0, "error", "get sourse file failed")
EndIf
$InetClose = InetClose($InetGet)
While $InetClose == False;该while循环处理当inetclose失败时重试
MsgBox(0, "", $InetClose & " " & $InetGet)
Sleep(1000)
If $InetGet <> 0 Then
$InetClose = InetClose($InetGet)
Else
ExitLoop
EndIf
WEnd
执行以上语句后,发现循环弹出一个msgbox,提示false,也就是说InetClose()方法失败。
请教各位高手:
1. 以上代码本身是否有问题?
2. InetClose()是不是真的存在不可释放网络资源的bug?
3. 如果是 2 ,如何解决?
4. 是否有替代方法解决此类问题?
非常感谢,如果你有好的办法,麻烦回帖,也可以发邮件给我,谢谢 |