#MaxThreadsBuffer


使得某些或所有的 热键 缓冲而不是忽略键击, 当达到它们的 #MaxThreadsPerHotkey 限制时.

#MaxThreadsBuffer On|Off

参数

On|Off

On: 从这里到下一个 #MaxThreadsBuffer ON 指令间的所有热键子程序都将缓冲它们热键的键击而不是忽略他们, 每当这些运行的子程序数达到它们的 #MaxThreadsPerHotkey 限制时.

Off: 这是默认的行为. 热键的键击将被忽略, 只要运行的热键已经达到它的最大线程数 (通常为 1, 不过可以通过 #MaxThreadsPerHotkey 来改变).

备注

此指令一般很少使用, 默认是关闭的, 因为这种类型的缓冲, 通常都弊大于利. 例如, 如果你意外的按下一个热键两次, 这个设置为打开的并且如果它的首个 线程 消耗不到 1 秒的时间就结束的话(根据设计, 这种类型的缓冲 1 秒后超时) , 将会导致此热键子程序自动运行两次.请注意 AutoHotkey 也使用多种其他的方法缓冲热键 (例如 "Thread Interrupt" 和 "Critical"). 只是这种特殊的方法可能是有害的, 因此它默认关闭.

此指令的主要用途是要增加键盘的自动重复特征的响应性. 例如, 当你按下一个它的 #MaxThreadsPerHotkey 设置为 1 (默认值) 的热键时, 如果此热键的子程序在运行中, 那么传入的键击将被忽略. 因此, 当子程序结束, 到它等待下一个自动重复的键击进来, 可能需要 50ms 或更多时间, 因为这是自动重复的键击被捕获的周期.为任何被自动重复时需要最好的响应时间的热键启用此指令可以避免 50ms 的延迟.

与所有的 # 指令一样, 此指令不应该像命令一样放在脚本中 (例如把它包含在一个子程序中是没必要的). 相反, 应该把它放在你希望影响的首个热键标签之前.

相关

#MaxThreads, #MaxThreadsPerHotkey, Critical, Thread (command), Threads, Hotkey, #MaxHotkeysPerInterval, #HotkeyInterval, ListHotkeys

示例

#MaxThreadsBuffer on
#x::MsgBox, This hotkey will use this type of buffering.
#y::MsgBox, And this one too.
#MaxThreadsBuffer off
#z::MsgBox, But not this one.