进度条和任务如何同时运行
有GUICtrlCreateProgress建立模仿进度条,不知能否实现当进度在运行的一开始就运行另一个子程序,直到子程序运行结束后使的进度条也正好走满格?请高手们来指点迷津![ 本帖最后由 hhasee 于 2009-3-28 10:59 编辑 ] 用Adlib或Timer 这样不好控制吧?子程序运行多长时间也不知道。
不如将进度条设置不停的移动不就行了。子程序运行完成就停止进度条。 #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $i,$j
GUICreate("My GUI") ; will create a dialog box that when displayed is centered
$progressbar1 = GUICtrlCreateProgress(10, 10, 300, 20)
GUISetState(@SW_SHOW) ; will display an empty dialog box
AdlibEnable("myadlib",1);开启一个调试线程,没1MS刷新一下进度.
; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
ExitLoop
EndIf
If $i<10000 Then
$i=$i+1 ;你可以在这里做点事,如果任务量太大,UI就会假死.
$j=$i/100 ;$j就是百分比了.从这个可以看出用AU3做GUI的效率和不足了.
EndIf
;Sleep(1)
WEnd
GUIDelete()
;...
Exit
Func myadlib()
GUICtrlSetData($progressbar1, $j);刷新进度,这里同样不能做大任务,没有返回程序不会向下执行的.
EndFunc
;看这个,应该知道,我为什么说AU3没有多线程了吧. :face (13): 悲哀啊! 顶一下,现在这个问题,我急切想知道答案! 本帖最后由 yuanyannian 于 2011-7-4 22:01 编辑
回复 4# akmm88
好像少了 #include <ProgressConstants.au3>
请检查。
而且,进度条 也不能与 程序运行所同步。
页:
[1]