When used on a Progress control it seems not to be a blocking function, but rather get's blocked itself by the next blocking function.
I set the progress data, and start InetRead, the control does not update until InetRead is complete, or a timer is employed.
Code explanation...
AutoIt
$hGui = GUICreate("Progress not updating properly", 400, 90) $Button = GUICtrlCreateButton("Start", 10, 10, 40) $hProgress = GUICtrlCreateProgress(10, 50, 380) GUISetState() While 3 Switch GUIGetMsg() Case -3 Exit Case $Button _Func() EndSwitch WEnd Func _Func() Beep(800, 100) Local $Timer = TimerInit() GUICtrlSetData($hProgress, 50) ;I'd expect the progress bar to step directly to middle (50) ;But it does not, unless it has sufficient time to doo so with below uncommented timer loop. ;Do ;Until TimerDiff($Timer) > 800 InetRead("https://msdn.microsoft.com/en-us/library/windows/desktop/bb760816(v=vs.85).aspx") Beep(600, 100) For $i = 51 To 100 GUICtrlSetData($hProgress, $i) Next EndFunc
So is it a blocking function or not, does it just send a message to the control, and it's handled internally, what's going on?
I really would not expect it to work in that fashion.