找回密码
 加入
搜索
查看: 3505|回复: 4

[AU3基础] inetclose无法关闭从inetget返回的句柄,请高手指教

[复制链接]
发表于 2010-5-18 23:43:27 | 显示全部楼层 |阅读模式
自己的一个程序,需要下载某一个页面,然后分析这个页面的内容,再做进一步的操作,操作完了再去下载这个页面,如此反复。但发现,在使用一段时间后,会导致所有需要访问网络的在某一个不确定的时候段内”假死“,把我的脚本退出后,其他访问网络的程序运行正常。
检查代码时发现,我在用了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. 是否有替代方法解决此类问题?

非常感谢,如果你有好的办法,麻烦回帖,也可以发邮件给我,谢谢
 楼主| 发表于 2010-5-19 16:49:15 | 显示全部楼层
自己顶一下
发表于 2010-5-19 22:20:44 | 显示全部楼层
$InetGet = InetGet("http://www.baidu.com/", "baidu.html", 1, 0)
这是等待下载完成,不是后台下载。$InetGet返回下载字节数,不是句柄。
$InetClose = InetClose($InetGet)
既然$InetGet非句柄,$InetClose将返回逻辑假。
 楼主| 发表于 2010-5-19 22:49:08 | 显示全部楼层
$InetGet = InetGet("http://www.baidu.com/", "baidu.html", 1, 0)
这是等待下载完成,不是后台下载。$In ...
sensel 发表于 2010-5-19 22:20



    谢谢sensel的回复与指正其中的错误

除去while循环中的代码,每隔一段时间进行一次inetget()操作,那为什么在运行一段时间后,会导致有网络访问的程序出现“假死”呢?与inetget()有关吗?
发表于 2010-5-21 09:26:41 | 显示全部楼层
定义AdlibRegister函数
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 07:36 , Processed in 0.075817 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表