waitfor

Блокируйте выполнение и ожидайте условия

Синтаксис

waitfor(mo)
waitfor(mo,propname)
waitfor(mo,propname,propvalue)

Описание

пример

Блочные операторы waitfor(mo) от выполнения до завершений объекта MATLAB® (удален). Когда объект больше не существует, waitfor возвращается, позволяя выполнению возобновиться. Если объект не существует, waitfor сразу возвращается.

пример

waitfor(mo,propname) задает имя свойства объекта и блокирует выполнение до значения изменений свойства или объектных завершений. Например, waitfor(mytable,'Data') приостанавливает выполнение до значения изменений 'Data' для mytable. Если заданное имя свойства недопустимо, выполнение остается блокированным.

пример

waitfor(mo,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.');

Закройте диалоговое окно предупреждения. Теперь, waitfor возвращается, резюме выполнения, и сообщение отображено в командной строке.

Ожидайте пользователя, чтобы установить флажок перед добавляющими данными к таблице. Обнаружьте, когда флажок будет установлен путем наблюдения его свойства Value.

Составьте таблицу и флажок. Установите свойство Value флажка к 0. Вызовите функцию waitfor и укажите, что свойство Value флажка должно измениться, прежде чем выполнение продолжается. Затем задайте данные, которые будут добавлены к таблице. Обратите внимание на то, что данные не появляются.

t = uitable;
c = uicontrol('Style','checkbox','String','Add data');
c.Value = 0;
c.Position = [320 100 80 20];
waitfor(c,'Value');
t.Data = magic(5);

Установите флажок. Это изменяет свойство флажка Value на 1. Резюме выполнения и заданные данные появляются в таблице.

Ожидайте пользователя, чтобы прекратить редактировать текстовое поле прежде, чем изменить цвет фона текста. Обнаружьте, когда пользователь прекратит редактировать и щелкнет в другом месте в фигуре путем ожидания свойства Editing текстового поля стать 'off'.

Создайте объект Text с некоторым первоначальным текстом, чтобы отобразиться. Затем установите его свойство Editing на 'on' и выберите его цвет фона белому.

txt = text(.5,.5,'Edit text and click');
txt.Editing = 'on';
txt.BackgroundColor = [1 1 1];

Затем, вызовите waitfor и укажите, что значение свойства Editing должно измениться на 'off' перед резюме выполнения. Выберите цвет фона текста к желтому и обратите внимание, что он еще не изменяется.

waitfor(txt,'Editing','off');
txt.BackgroundColor = [1 1 0];

Нажмите на текстовое поле и отредактируйте его содержимое. Затем щелкните в другом месте в фигуре. Теперь, waitfor возвращается, резюме выполнения и изменения цвета фона текста в желтом.

Входные параметры

свернуть все

Любой объект MATLAB, включая объекты Graphics, такие как Axes, Text, Panel, ButtonGroup, Table или объекты UIControl.

Имя свойства, заданное как вектор символа или скаляр строки. Используйте этот аргумент, чтобы задать свойство mo, значение которого должно измениться перед резюме выполнения.

Значение свойства сопоставлено с propname, заданным как любые данные MATLAB. Для допустимых типов данных propvalue обратитесь к странице с описанием MATLAB для типа объекта, который вы задали. Используйте этот аргумент, чтобы указать на определенное значение, которое свойство должно изменить на то, прежде чем выполнение продолжится.

Советы

  • Если вы закрываете фигуру, в то время как waitfor выполняется, ошибка происходит, потому что код пытается получить доступ к объектам, которые больше не существуют. Можно обработать ошибку путем включения waitfor в блок try/catch.

Алгоритмы

Как правило, обратные вызовы могут все еще запуститься, если waitfor использовался, чтобы препятствовать тому, чтобы программы или модели Simulink® продолжили выполнение. Например, обратные вызовы, которые отвечают на пользовательские действия (как нажатие кнопки мыши) могут все еще запуститься, даже если waitfor был назван.

waitfor может также использоваться, чтобы блокировать вызовы вложенной функции. Например, обратный вызов, который выполняется, в то время как функция waitfor запускается, может также вызвать waitfor. Если функция обратного вызова компонента UI является выполняющимся в данным моментом функция waitfor, то тот обратный вызов может быть прерван независимо от того, во что было установлено значение свойства Interruptible для того компонента.

Представлено до R2006a

Была ли эта тема полезной?