【发布时间】:2025-12-23 18:50:07
【问题描述】:
MATLAB UI 回调(例如 WindowKeyPressFcn)可以被新触发的回调中断。这对于终止运行时间过长的代码非常有用。有没有办法以编程方式触发回调事件?
请注意,与this question 的答案相比,我不是在问如何以编程方式运行回调函数。我实际上想以编程方式触发回调事件,以利用此可中断性功能。
【问题讨论】:
MATLAB UI 回调(例如 WindowKeyPressFcn)可以被新触发的回调中断。这对于终止运行时间过长的代码非常有用。有没有办法以编程方式触发回调事件?
请注意,与this question 的答案相比,我不是在问如何以编程方式运行回调函数。我实际上想以编程方式触发回调事件,以利用此可中断性功能。
【问题讨论】:
回调中断是由其他回调发起的,特别是因为在执行回调时不能执行任何其他代码。如果您能够“以编程方式”调用回调,那么您已经“中断”了任何其他可能正在进行的回调。
这并不是说您不能以编程方式触发 UI 回调。存储在WindowKeyPressFcn 等对象属性中的回调句柄通常会馈送到侦听器中,以获取这些对象的相应事件。例如,您可以使用notify(gcf,'WindowKeyPress') 为当前图形调用WindowKeyPressFcn。
但是,如果您可以拨打电话,您也可以在中断回调中做任何您想做的事情。如果您能够运行该行是因为您中断了回调,那么您需要考虑回调在恢复执行时会做什么。
【讨论】:
notify(gcf(), 'WindowKeyPress')。