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

사용자가 텍스트 필드의 편집을 중지하고 Figure의 다른 곳을 클릭하면 텍스트 필드의 배경색을 변경합니다. 텍스트 필드에서 커서가 사라지면 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 객체에 있는 컨테이너의 자식일 수도 있습니다.

속성 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 인수를 사용하여 실행이 재개되기 전에 그 값이 변경되어야 하는 obj의 속성을 지정합니다.

속성값으로, propname에 대한 유효한 속성값으로 지정됩니다. 속성이 어떤 값으로 변경되어야 실행이 재개될 수 있는지 이 인수에 지정합니다.

  • waitfor가 실행되고 있는 동안 Figure를 닫으면 코드가 더 이상 존재하지 않는 객체에 액세스를 시도하기 때문에 오류가 발생합니다. waitfortry/catch 블록으로 둘러싸 오류를 처리할 수 있습니다.

알고리즘

일반적으로 프로그램 또는 Simulink® 모델의 실행이 계속되는 것을 방지하기 위해 waitfor가 사용된 경우에도 콜백이 여전히 실행될 수 있습니다. 예를 들어, waitfor가 호출된 경우에도 사용자 동작(예: 마우스 버튼 누름)에 응답하는 콜백은 여전히 실행될 수 있습니다.

waitfor는 중첩 함수의 호출을 차단하기 위해서도 사용될 수 있습니다. 예를 들어, waitfor 함수 실행 중에 실행되는 콜백이 waitfor도 호출할 수 있습니다.

UI 컴포넌트의 콜백 함수가 현재 waitfor 함수를 실행 중인 경우에는 해당 컴포넌트의 Interruptible 속성값이 무엇으로 설정되었는지와 상관없이 그 콜백이 중단될 수 있습니다.

버전 내역

R2006a 이전에 개발됨