AutoIt _Timer_SetTimer - 额外的回调参数
AutoIt _Timer_SetTimer - Additional callback arguments
使用 AutoIt 3,有没有办法将额外的参数传递给 _Timer_SetTimer
函数中的回调方法?
这是我的用例(主循环):
For $item In $items
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
回调方法:
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
// Do something on $item
EndFunc
我尝试使用 Global
变量,但 MyMethod
的每个实例都使用最后一个值。我是这样做的:
Global $currentItem
For $item In $items
$currentItem = $item
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
$item = $currentItem
// Do something on $item
EndFunc
所以,我是做错了还是有办法直接传递参数?谢谢。
如果您的延迟调用是有序的,您仍然可以使用全局变量将值存储在数组中:
Global $values[0]
For $item In $items
_ArrayAdd($values, $item)
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
_ArrayReverse($values)
$item = _ArrayPop($values)
_ArrayReverse($values)
// Do something on $item
EndFunc
double reverse 和 pop 是用来模拟 FIFO 队列的
使用 AutoIt 3,有没有办法将额外的参数传递给 _Timer_SetTimer
函数中的回调方法?
这是我的用例(主循环):
For $item In $items
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
回调方法:
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
// Do something on $item
EndFunc
我尝试使用 Global
变量,但 MyMethod
的每个实例都使用最后一个值。我是这样做的:
Global $currentItem
For $item In $items
$currentItem = $item
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
$item = $currentItem
// Do something on $item
EndFunc
所以,我是做错了还是有办法直接传递参数?谢谢。
如果您的延迟调用是有序的,您仍然可以使用全局变量将值存储在数组中:
Global $values[0]
For $item In $items
_ArrayAdd($values, $item)
_Timer_SetTimer(0, $timeOffset, "MyMethod")
Next
Func MyMethod($hWnd, $iMsg, $iTimerID, $iTime)
_Timer_KillTimer ( $hWnd, $iTimerID )
_ArrayReverse($values)
$item = _ArrayPop($values)
_ArrayReverse($values)
// Do something on $item
EndFunc
double reverse 和 pop 是用来模拟 FIFO 队列的