ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

waitfor

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

構文

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

説明

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

waitfor(h,'PropertyName') は、'PropertyName' (グラフィックス オブジェクト h の任意のプロパティ) の値が変わるか、h が閉じる (削除される) まで、呼び出し側が実行できないようにします。'PropertyName' がオブジェクトの有効なプロパティでない場合、関数 waitfor はどのイベントも処理せずにすぐに返します。

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

定義

  • 関数 waitfor は実行を中断します。そのため、コマンド ラインの式および中断されたファイル内のそれ以降のステートメントは、指定された条件が発生するまで実行されません。

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

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

  • 関数 waitfor は入れ子にされた関数呼び出しを中断することができます。たとえば、関数 waitfor がアクティブである間に呼び出されたコールバックは、関数 waitfor を呼び出すことができます。

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

プロットを作成し、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 button click that changes the figure''s name');
       
 

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

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® 例外オブジェクトです。詳細は、「 例外への応答」を参照してください。

参考

| | | | |

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