文档

中断执行回调

MATLAB®让你控制一个回调函数是否可以中断时执行。例如,您可以允许用户停止动画循环通过创建一个回调,打断了动画。在其他时候,你可能想要防止潜在的干扰,当运行回调的顺序是很重要的。例如,您可能防止中断了WindowButtonMotionFcn调显示一个图像的不同部分。

如何控制中断

回调函数执行根据他们的订单在一个队列。如果回调执行和用户操作触发第二次回调,第二回调试图打断第一个回调。第一个回调跑回调。第二回调打断回调

两个属性值控制的响应中断的尝试:

  • 可中断对象的属性拥有运行调决定是否允许中断。的值“上”允许中断。的值“关闭”不允许中断。默认值是“上”

  • 如果中断是不允许的,那么BusyAction对象拥有的属性(打断回调)决定如果MATLAB利用或丢弃打断的回调。的值“队列”允许中断运行后回调执行回调结束执行。的值“取消”丢弃打断的回调。默认值是“队列”

中断时执行的回调行为是被允许的

当一个对象的可中断属性设置为“上”在下次发生,其回调可中断的这些命令之一:drawnow,,getframe,等待,或暂停

  • 如果运行调包含其中的一个命令,然后用MATLAB停止运行的执行回调执行中断的回调。MATLAB简历执行运行时回调打断调完成。

  • 如果调不包含运行这些命令,然后用MATLAB完成执行回调没有中断。

更多细节可中断的属性及其效果,看到可中断属性描述的UIControl属性页面。

例子

这个例子展示了如何控制中断使用回调可中断BusyAction属性。

复制源文件

  1. 在MATLAB,设置当前文件夹的写访问。

  2. 执行这个MATLAB命令:
    拷贝文件(fullfile (docroot,‘techdoc’,‘creating_guis’,“例子”,…
    “callback_interrupt.m”)), fileattrib (callback_interrupt。m ', ' + w ');

运行示例代码

执行命令,callback_interrupt。程序显示两个窗口。

点击具体的双按钮显示的效果不同的属性值的组合:

  • 回调中断——点击等待(可中断)立即紧随其后的按钮在第二个窗口:冲浪情节(队列)网格图(取消)。等待栏显示,但暂时打断了绘图操作。

  • 回调排队——点击等待(不间断)立即紧随其后冲浪情节(队列)。等待栏跑到完成。然后曲面图显示。

  • 取消回调——点击等待(不间断)立即紧随其后网格图(取消)。等待栏跑到完成。没有情节显示因为MATLAB丢弃网格图的回调。

检查源代码

可中断BusyAction作为输入参数传递到属性uicontrol当创建每个按钮功能。

这是创建的命令等待(可中断)按钮。请注意,可中断属性设置为“上”

h_interrupt = uicontrol (h_panel1,“风格”,“按钮”,…“位置”,(30110120,30),……“弦”、“等(可中断)”,…“TooltipString”、“可中断=“…“可中断”,“对”,…“回调”,@wait_interruptible);

这是创建的命令等待(不间断)按钮。请注意,可中断属性设置为“关闭”

h_nointerrupt = uicontrol (h_panel1,“风格”,“按钮”,…“位置”,(40120,30),……“弦”、“等(不间断)”,…“TooltipString”、“可中断=”,…“可中断”,“关闭”,…“回调”,@wait_uninterruptible);

这是创建的命令冲浪情节(队列)按钮。请注意,BusyAction属性设置为“队列”

hsurf_queue = uicontrol (h_panel2,“风格”,“按钮”,…“位置”,(30200110,30),……“弦”、“冲浪情节(队列),…“BusyAction”、“队列”,…“TooltipString”、“BusyAction =队列”,…“回调”,@surf_queue);

这是创建的命令网格图(取消)按钮。请注意,BusyAction属性设置为“取消”

hmesh_cancel = uicontrol (h_panel2,“风格”,“按钮”,…“位置”,(30130110,30),……“弦”、“网图(取消),…“BusyAction”、“取消”,…“TooltipString”、“BusyAction =取消',…“回调”,@mesh_cancel);

另请参阅

|||

相关的话题

这个主题有帮助吗?