Optimizing Tab Control With AutoIT

So I wrote this to simulate a program that would have a start and stop feature, and has a tab design. Right now there is a tab that has a RichEdit object intended to be a running log.

As you can see, after we "start" the program I put just some milliseconds of sleep to simulate running instructions. I created a function to check for requests that would be called on a larger scale randomly throughout code to ping the GUI per say.

#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>

Global Const $h_numOfTabs = 2 Global Enum$H_TAB_1, $H_TAB_2,$H_TAB_END
Global $hGui,$h_logRichEdit, $iMsg,$h_tabs, $h_startButton,$h_stopButton

Example()

Func Example()
$hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 400, 550, -1, -1) ; ADD START AND STOP BUTTONS$h_startButton = GUICtrlCreateButton( "Start", 50, 450 )
$h_stopButton = GUICtrlCreateButton( "Stop", 150, 450 )$h_tabs = GUICtrlCreateTab( 5, 5, 390,375 )

; LOG TAB
GUICtrlCreateTabItem( "Log" )
$h_logRichEdit = _GUICtrlRichEdit_Create ($hGui, "", 8, 30, 384, 347, BitOR( $ES_MULTILINE,$WS_VSCROLL, $ES_AUTOVSCROLL,$ES_READONLY ) )

; STATS TAB
GUICtrlCreateTabItem( "Stats" )

; Close TABS
GUICtrlCreateTabItem( "" )

GUISetState( @SW_SHOW ) ; initialize the gui

While True
CheckRequests()
WEnd
EndFunc   ;==>Example

Func Start()
while true
Sleep(100)
CheckRequests()
WEnd
EndFunc

Func Stop()

EndFunc

Func CheckRequests()
$iMsg = GUIGetMsg() while$iMsg <> 0
Select
Case $iMsg =$GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($h_logRichEdit) ; needed unless script crashes ; GUIDelete() ; is OK too Exit Case$iMsg = $h_tabs Switch GUICtrlRead($h_tabs )
Case $H_TAB_1 ControlShow($hGui, "", $h_logRichEdit ) Case Else ControlHide($hGui, "", $h_logRichEdit ) EndSwitch Case$iMsg = $h_startButton Start() Case$iMsg = $h_stopButton Stop() EndSelect$iMsg = GUIGetMsg()
WEnd
EndFunc


At about 500ms sleep, the lag when switching tabs is visible.

My question: On a larger scale, is this how we would handle/update things that are specific to a tab while running a larger program? If not, what would be a more efficient way of updating tab specific properties while running a larger overall program.

I have also seen a design recently where all the tabs and related components were their own GUI's but I am not sure the relevance of everything being its own GUI and if it pertains to this question.

Any help or clarification is greatly appreciated, I am new to AutoIT and trying to figure out some do's and dont's as well as efficiency.