目录
waitfor阻止执行并等待条件
语法
waitfor(obj)
waitfor(obj,propname)
waitfor(obj,propname,propvalue)
说明
waitfor(obj) 可阻止语句的执行,直到指定的对象关闭(被删除)。当该对象不再存在时,waitfor 将返回并恢复语句的执行。如果该对象不存在,waitfor 将立即返回。
waitfor(obj,propname) 可指定对象的属性名称并阻止语句的执行,直到该属性值更改或该对象关闭。例如,waitfor(mytable,'Data') 会暂停语句执行,直到 mytable 的 'Data' 值更改。如果指定的属性名称无效,则执行仍会被阻止。
waitfor(obj,propname,propvalue) 可指定属性更改为何值时才恢复执行。如果指定的属性已等于propvalue,则waitfor会立即返回并恢复执行。
示例
等待警告对话框关闭
创建一个警告对话框,并等待其关闭。在关闭对话框之前,waitfor
后的命令不会执行。
mydlg = warndlg('This is a warning.', 'A Warning Dialog');
waitfor(mydlg);
disp('This prints after you close the warning dialog.');
等待属性值更改
在将数据添加到表之前,等待用户选中复选框。复选框的Value
属性在未选中时为0
,在选中时为 1
。
t = uitable;
c = uicontrol('Style','checkbox','String','Add data');
c.Position = [320 100 80 20];
waitfor(c,'Value');
t.Data = magic(5);
等待属性更改为特定值
当用户停止编辑文本字段并点击图窗中的其他位置时,更改文本字段的背景颜色。当文本字段失去焦点时,Editing
属性从 'on'
更改为 'off'
。
txt = text(.5,.5,'Edit text and click');
txt.Editing = 'on';
txt.BackgroundColor = [1 1 1];
waitfor(txt,'Editing','off');
txt.BackgroundColor = [1 1 0];
对象
对象,例如 Axes、Text、Panel、ButtonGroup、Table 或UIControl对象。该对象可以是用figure或uifigure函数创建的Figure对象的子对象,也可以是Figure对象中容器的子对象。
propname
- 属性名称
属性名称,指定为字符向量或字符串标量。使用此参数指定obj的一个特定属性,须在此属性的值更改之后才能恢复执行。
propvalue
- 属性值
与propname
相关联的有效属性值
属性值,指定为与propname关联的有效属性值。使用此参数可指示属性必须更改为哪个具体值后才恢复执行。
提示
-
如果在waitfor执行过程中关闭图窗,将会发生错误,因为代码尝试访问不再存在的对象。可以通过在try/catch块中包含waitfor来处理错误。
算法
通常,在使用了waitfor来阻止程序或Simulink® 模型继续执行的情况下,回调仍可以运行。例如,即使已调用waitfor,用于响应用户操作的回调(如按下鼠标按键)仍可以运行。
waitfor也可用于阻止嵌套函数调用。例如,在waitfor函数正运行时执行的回调也可调用waitfor。
如果UI组件的某个回调函数当前正在执行waitfor函数,则可以中断该回调,而不管该组件的 Interruptible 属性值设置为何值。