itljl 发表于 2010-3-3 19:50:53

新版的AdlibRegister优先级还是太低

本帖最后由 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"的吗?

itljl 发表于 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))
同样如此。

auto 发表于 2010-3-3 20:25:19

AdlibRegister类似于单片机的定时器,但是貌似该定时器不是独立的

llztt 发表于 2010-3-3 21:16:21

AdlibRegister在不支持多线程的AU3中十分重要,当然还是有很多不带劲的地方,譬如碰到MSGBOX。。

pusofalse 发表于 2010-3-3 22:23:51

说AU3不支持多线程的,全都是废话,从来没有人能够用确切的理论和实践来证明AU3果真不支持多线程。
其实AU3本身对多线程是完美支持的,只不过是因为我们的水平、认知都极其匮乏,而误认为AU3不能实现,而已。嗯嗯,就是如此。
以上,没有任何贬低楼主的意思,反倒赞佩楼主如此的钻研精神。我只是在表达这样一件事情:当遇到某个问题暂时不能解决时,我们应该先怀疑一下自己的水平是否到家,而不是假设问题出在编程工具上。

itljl 发表于 2010-3-4 19:55:07

回复 5# pusofalse

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

不过目前为止,AU3这个工具,暂时没有发现有人使用了真正的多线程,呵呵,欢迎各位继续探讨,继续一起共同提升技术和认知.
页: [1]
查看完整版本: 新版的AdlibRegister优先级还是太低