让第二个线程持续更新?
Getting a second thread to update consistently?
我正在尝试在 autohotkey 中创建一个 "heartbeat monitor" 类型。
我当前的程序很简单,我有一个大约需要 2 秒才能完成的过程来计算蜂鸣声应该有多尖锐,以及一个以计算出的频率发出蜂鸣声的小循环例程。
但我现在 运行 遇到了障碍 - 如何更新 "beeper" 例程以使用新频率而不中断其正常计时?
我最初尝试的是有效地检查全局变量(我觉得这不太可能奏效)
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, -1
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
loop,
{
SoundBeep, %frequency%
Sleep, 500
}
但频率似乎永远不会更新(因为计算频率再也不会 运行s),这是有道理的。
所以我的下一个方法是改用 settimer 的计时,但它根本不够一致。
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, 500
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
SoundBeep, %frequency%
允许更改频率同时保持 500 毫秒间隔一致的最佳方法是什么?我是 ahk 的多线程新手。
感谢 autohotkey 论坛上的 wolf_II - 这是我迄今为止找到的最佳解决方案。
使用两个计时器可以让他们更好地相处(并避免评论中的睡眠问题)
global frequency := 500 ; default frequency
Somehotkey::
SetTimer, BeepCycle, 500
SetTimer, CalcCycle, 5000
return
BeepCycle:
SoundBeep, %frequency%
return
CalcCycle:
frequency := CalculateFrequency()
return
我正在尝试在 autohotkey 中创建一个 "heartbeat monitor" 类型。
我当前的程序很简单,我有一个大约需要 2 秒才能完成的过程来计算蜂鸣声应该有多尖锐,以及一个以计算出的频率发出蜂鸣声的小循环例程。
但我现在 运行 遇到了障碍 - 如何更新 "beeper" 例程以使用新频率而不中断其正常计时?
我最初尝试的是有效地检查全局变量(我觉得这不太可能奏效)
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, -1
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
loop,
{
SoundBeep, %frequency%
Sleep, 500
}
但频率似乎永远不会更新(因为计算频率再也不会 运行s),这是有道理的。
所以我的下一个方法是改用 settimer 的计时,但它根本不够一致。
frequency := 500 ;super-global default frequency
Somehotkey::
SetTimer, BeepCycle, 500
Loop,
{
frequency := CalculateFrequency()
Sleep, 5000
}
return
BeepCycle:
SoundBeep, %frequency%
允许更改频率同时保持 500 毫秒间隔一致的最佳方法是什么?我是 ahk 的多线程新手。
感谢 autohotkey 论坛上的 wolf_II - 这是我迄今为止找到的最佳解决方案。
使用两个计时器可以让他们更好地相处(并避免评论中的睡眠问题)
global frequency := 500 ; default frequency
Somehotkey::
SetTimer, BeepCycle, 500
SetTimer, CalcCycle, 5000
return
BeepCycle:
SoundBeep, %frequency%
return
CalcCycle:
frequency := CalculateFrequency()
return