找回密码
 加入
搜索
查看: 4871|回复: 5

[效率算法] 新版的AdlibRegister优先级还是太低

[复制链接]
发表于 2010-3-3 19:50:53 | 显示全部楼层 |阅读模式
本帖最后由 itljl 于 2010-3-3 19:53 编辑
AdlibRegister("_text", 200)
Global $i
While 1
        Ping("192.168.5.1")
        Sleep(1000)
WEnd
Func _text()
        $i += 1
        ToolTip("      " & $i & "      ", 10, 10)
EndFunc   ;==>_text
按帮助中的说法,AdlibRegister所指定的函数(_text)在规定的时间执行_text函数时,脚本会暂停。
这个例子则说明了,当ping一个不存在的IP超时时间较长(当脚本在执行一个函数,还没有完成时),根本不会在AdlibRegister设置的时间来去执行_text这个函数(从tooltip显示的数字增加速度来判断)...,必须得等Ping结束。。。

没有多线程也就算了,但哪位兄弟能有什么办法得到一个更高优先级的 "AdlibRegister"的吗?
 楼主| 发表于 2010-3-3 19:56:17 | 显示全部楼层

$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
$TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 200, "ptr", DllCallbackGetPtr($Timer))
同样如此。
发表于 2010-3-3 20:25:19 | 显示全部楼层
AdlibRegister类似于单片机的定时器,但是貌似该定时器不是独立的
发表于 2010-3-3 21:16:21 | 显示全部楼层
AdlibRegister在不支持多线程的AU3中十分重要,当然还是有很多不带劲的地方,譬如碰到MSGBOX。。
发表于 2010-3-3 22:23:51 | 显示全部楼层
说AU3不支持多线程的,全都是废话,从来没有人能够用确切的理论和实践来证明AU3果真不支持多线程。
其实AU3本身对多线程是完美支持的,只不过是因为我们的水平、认知都极其匮乏,而误认为AU3不能实现,而已。嗯嗯,就是如此。
以上,没有任何贬低楼主的意思,反倒赞佩楼主如此的钻研精神。我只是在表达这样一件事情:当遇到某个问题暂时不能解决时,我们应该先怀疑一下自己的水平是否到家,而不是假设问题出在编程工具上。
 楼主| 发表于 2010-3-4 19:55:07 | 显示全部楼层
回复 5# pusofalse

哈哈,我认同“只不过是因为我们的水平、认知都极其匮乏”的时候,造成误认为某样工具做不了某事。

不过目前为止,AU3这个工具,暂时没有发现有人使用了真正的多线程,呵呵,欢迎各位继续探讨,继续一起共同提升技术和认知.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-26 17:44 , Processed in 0.075106 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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