ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

waitfor

実行を停止し、イベントまたは状態を待つ

構文

waitfor(h)
waitfor(h,PropertyName)
waitfor(h,PropertyName,PropertyValue)

説明

waitfor(h) は、h によって特定されたグラフィックス オブジェクトが閉じる (削除される) まで、呼び出し側がステートメントを実行できないようにします。オブジェクト h が存在しなくなると、関数 waitfor に戻り、実行を再開できるようになります。オブジェクトが存在しない場合、関数 waitfor は、どのイベントも処理せずにすぐに戻ります。

waitfor(h,PropertyName) は、PropertyName (グラフィックス オブジェクト h の任意のプロパティ) の値が変わるか、h が閉じる (削除される) まで、呼び出し側が実行できないようにします。PropertyName がオブジェクトの有効なプロパティでない場合、MATLAB® はエラーを返します。

waitfor(h,PropertyName,PropertyValue) は、グラフィックス オブジェクト hPropertyName の値が特定の値 PropertyValue に変わるか、h が閉じる (削除される) まで、呼び出し側が実行できないようにします。PropertyName の値が既に PropertyValue である場合、関数 waitfor は、どのイベントも処理せずにすぐに戻ります。

関数 waitfor の重要な特性は次のとおりです。

  • 関数 waitfor は呼び出し側が続行できないようにしますが、さまざまなユーザー アクション (たとえば、マウス ボタンを押すこと) に応答するコールバックは実行できます。

  • 関数 waitfor は Simulink® モデルの実行もブロックしますが、コールバックは依然として実行されます。

  • 関数 waitfor は入れ子にされた関数呼び出しをブロックすることができます。たとえば、関数 waitfor の実行中に実行されるコールバックは waitfor を呼び出すことができます。

  • UI コンポーネントのコールバック関数が関数 waitfor を実行中の場合、そのコールバックはそのコンポーネントの Interruptible プロパティ値に関係なく中断されることがあります。

  • 関数 waitfor が実行している間に Ctrl+C キーが押されると、実行中のプログラムは終了します。終了を回避するため、プログラムは Ctrl+C のキー入力で生成された例外を処理する try/catch ブロック内で関数 waitfor を呼び出すことができます。

プロットを作成し、Figure ウィンドウを閉じるまで残りのステートメントの実行を一時中断します。

f = warndlg('This is a warning.', 'A Warning Dialog');
disp('This prints immediately');
drawnow     % Necessary to print the message
waitfor(f);
disp('This prints after you close the warning dialog');

Figure の名前が変わるまで実行を一時停止します。

f = figure('Name', datestr(now));
h = uicontrol('String','Change Name',...
              'Position',[20 20 100 30],...
'Callback', 'set(gcbf, ''Name'', datestr(now))');
disp('This prints immediately');
drawnow     % Necessary to print the message
waitfor(f, 'Name');
disp('This prints after clicking the push button');     

テキスト オブジェクトを表示し、ユーザーが編集するのを待ちます。

figure;
textH = text(.5, .5, 'Edit me and click away');
set(textH,'Editing','on', 'BackgroundColor',[1 1 1]);
disp('This prints immediately.');
drawnow
waitfor(textH,'Editing','off');
set(textH,'BackgroundColor',[1 1 0]);
disp('This prints after text editing is complete.');
関数 waitfor の実行中に Figure が閉じられると、存在しなくなったオブジェクトのハンドルにコードがアクセスしようとするため、エラーが発生します。次のように関数 waitfor の呼び出しで始まる try/catch ブロック内のコードを囲むことによって、エラーを処理できます。
figure;
textH = text(.5, .5, 'Edit me and click away');
set(textH,'Editing','on', 'BackgroundColor',[1 1 1]);
disp('This prints immediately.');
drawnow
% Use try/catch block to handle errors, 
% such as deleting figure
try
    waitfor(textH,'Editing','off');
    set(textH,'BackgroundColor',[1 1 0]);
    disp('This prints after text editing is complete.');
catch ME
    disp('This prints if figure is deleted:')
    disp(ME.message)
		% You can place other code to respond to the error here
end
ME 変数は、発生したエラーの種類を判断するために使用できる MATLAB 例外オブジェクトです。詳細は、「 例外への応答」を参照してください。

この情報は役に立ちましたか?