Main Content

waitfor

阻止执行并等待条件

说明

示例

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];

输入参数

全部折叠

对象,例如 AxesTextPanelButtonGroupTableUIControl 对象。该对象可以是用 figureuifigure 函数创建的 Figure 对象的子对象,也可以是 Figure 对象中容器的子对象。

属性名称,指定为字符向量或字符串标量。使用此参量指定 obj 的一个特定属性,须在此属性的值更改之后才能恢复执行。

属性值,指定为与 propname 关联的有效属性值。使用此参量可指示属性必须更改为哪个具体值后才恢复执行。

提示

  • 如果在 waitfor 执行过程中关闭图窗,将会发生错误,因为代码尝试访问不再存在的对象。您可以通过在 try/catch 块中包含 waitfor 来处理错误。

算法

通常,在使用了 waitfor 来阻止程序或 Simulink® 模型继续执行的情况下,回调仍可以运行。例如,即使已调用 waitfor,用于响应用户操作的回调(如按下鼠标按键)仍可以运行。

waitfor 也可用于阻止嵌套函数调用。例如,在 waitfor 函数正运行时执行的回调也可调用 waitfor

如果 UI 组件的某个回调函数当前正在执行 waitfor 函数,则可以中断该回调,而不管该组件的 Interruptible 属性值设置为何值。

版本历史记录

在 R2006a 之前推出