主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

コールバックの実行

コールバック実行時の動作

リスナーでは,イベントの発生が通知されると,そのコールバック関数が実行されます。リスナーのコールバック実行時にエラーが発生しても,同じイベントに応答している他のリスナーやイベントをトリガーした関数が実行されないようにすることはできないという点で,リスナーは受動的なオブザーバーです。

コールバック関数の実行は,その関数が終了するまで続行されます。コールバック関数でエラーが発生した場合は,実行が停止され,制御は呼び出し側の関数に戻されます。その後,残りのリスナーコールバック関数が実行されます。

リスナーの実行順序

イベントの発生後にリスナーコールバック関数が実行される順序は,定義されていません。ただし,リスナーコールバックの実行は,イベントの発生と同期します。

ハンドルクラスの通知メソッドは,通知を呼び出した関数に実行を戻す前にすべてのリスナーを呼び出します。

通知を呼び出すコールバック

通知に渡し,その後リスナーコールバックに渡すイベントデータオブジェクトは,変更して再使用したり,コピーして再使用しないでください。

リスナーコールバックにより通知を呼び出してイベントをトリガーすることができます。これにはコールバックを呼び出した同じイベントが含まれます。関数が通知を呼び出すと,MATLAB®はコールバック関数に渡されるイベントデータオブジェクトのプロパティ値を設定します。続いて呼び出されるコールバックのプロパティが確実に適切値をもつようにするには,カスタムイベントデータをもつ通知を呼び出す場合には必ず新しいイベントデータオブジェクトを作成してください。

コールバックエラーの管理

エラーに対するプログラムの応答を制御する場合は,リスナーコールバック関数のtry / catchステートメントを使用してエラー処理を行います。

関数ハンドルからの関数の呼び出し

クラスメソッド内で関数ハンドルを作成する場合,メソッドのコンテキストによって関数が実行されるコンテキストが決定されます。このコンテキストにより,そのクラスにアクセス可能なプライベートおよび保護されたメソッドへのアクセスが関数に付与されます。

たとえば,UpdateEvtクラスは,更新という名前のイベントおよびこのイベントのリスナーを定義します。リスナーコールバックはプライベートメソッドevtCbです。

classdefUpdateEvt <处理事件更新结束方法函数obj = UpdateEvt addlistener(obj,“更新”, @evtCb);结束结束方法(访问=私人)函数obj = evtCb(obj,varargin) disp(更新事件引发的结束结束结束

プライベートメソッドは通常,クラスメソッドによってのみアクセス可能です。しかし,関数ハンドルがクラスメソッド内で作成されているので,通知はクラスの外部からコールバックを実行できます。

一个= UpdateEvt;a.notify (“更新”
更新事件触发

関連するトピック