このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
リスナーでは,イベントの発生が通知されると,そのコールバック関数が実行されます。リスナーのコールバック実行時にエラーが発生しても,同じイベントに応答している他のリスナーやイベントをトリガーした関数が実行されないようにすることはできないという点で,リスナーは受動的なオブザーバーです。
コールバック関数の実行は,その関数が終了するまで続行されます。コールバック関数でエラーが発生した場合は,実行が停止され,制御は呼び出し側の関数に戻されます。その後,残りのリスナーコールバック関数が実行されます。
イベントの発生後にリスナーコールバック関数が実行される順序は,定義されていません。ただし,リスナーコールバックの実行は,イベントの発生と同期します。
ハンドルクラスの通知
メソッドは,通知
を呼び出した関数に実行を戻す前にすべてのリスナーを呼び出します。
通知
を呼び出すコールバック通知
に渡し,その後リスナーコールバックに渡すイベントデータオブジェクトは,変更して再使用したり,コピーして再使用しないでください。
リスナーコールバックにより通知
を呼び出してイベントをトリガーすることができます。これにはコールバックを呼び出した同じイベントが含まれます。関数が通知
を呼び出すと,MATLAB®はコールバック関数に渡されるイベントデータオブジェクトのプロパティ値を設定します。続いて呼び出されるコールバックのプロパティが確実に適切値をもつようにするには,カスタムイベントデータをもつ通知
を呼び出す場合には必ず新しいイベントデータオブジェクトを作成してください。
エラーに対するプログラムの応答を制御する場合は,リスナーコールバック関数のtry / catch
ステートメントを使用してエラー処理を行います。
クラスメソッド内で関数ハンドルを作成する場合,メソッドのコンテキストによって関数が実行されるコンテキストが決定されます。このコンテキストにより,そのクラスにアクセス可能なプライベートおよび保護されたメソッドへのアクセスが関数に付与されます。
たとえば,UpdateEvt
クラスは,更新
という名前のイベントおよびこのイベントのリスナーを定義します。リスナーコールバックはプライベートメソッドevtCb
です。
classdefUpdateEvt <处理事件更新结束方法函数obj = UpdateEvt addlistener(obj,“更新”, @evtCb);结束结束方法(访问=私人)函数obj = evtCb(obj,varargin) disp(更新事件引发的)结束结束结束
プライベートメソッドは通常,クラスメソッドによってのみアクセス可能です。しかし,関数ハンドルがクラスメソッド内で作成されているので,通知
はクラスの外部からコールバックを実行できます。
一个= UpdateEvt;a.notify (“更新”)
更新事件触发