Событие и Концепции прослушивателя

Модель событий

События представляют изменения или действия, которые происходят в объектах. Например,

  • Модификация данных класса

  • Выполнение метода

  • Запрос или установка значения свойства

  • Разрушение объекта

В основном любое действие, которое можно обнаружить программно, может сгенерировать событие и передать информацию к другим объектам.

Классы MATLAB® задают процесс, который передает возникновение событий к другим объектам, которые отвечают на события. Модель событий прокладывает себе путь:

Следующая схема иллюстрирует модель событий.

Ограничения

Существуют определенные ограничения к использованию событий:

  • Источник события не может гарантировать, что прослушиватели существуют при инициировании события.

  • Прослушиватель не может препятствовать тому, чтобы другие прослушиватели были уведомлены, который имело место событие.

  • Порядок, в котором выполняются прослушиватели, не задан.

  • Прослушиватели не должны изменять объект данных о событиях, переданный обратному вызову прослушивателя, потому что другие прослушиватели передаются этот тот же объект указателя.

Данные стандартного события

События предоставляют информацию обратным вызовам прослушивателя путем передачи аргумента данных о событиях функции обратного вызова. По умолчанию MATLAB передает объект event.EventData обратному вызову прослушивателя. Этот объект имеет два свойства:

  • EventName Имя события, как задано в классе блок event

  • Source — Объект, который является источником события

MATLAB передает исходный объект обратному вызову прослушивателя в необходимом аргументе данных о событиях. Используйте исходный объект, чтобы получить доступ к любой из общественных собственностей объекта из вашей функции обратного вызова прослушивателя.

Настройка данных о событиях

Можно создать подкласс класса event.EventData, чтобы предоставить дополнительную информацию функциям обратного вызова прослушивателя. Подкласс задал бы свойства содержать дополнительные данные и предоставить метод, чтобы создать выведенный объект данных о событиях, таким образом, это может быть передано методу notify.

Задайте Привязанные к конкретному событию Данные, обеспечивает пример, показывающий, как настроить это данные.

События только в Классах Handle

Можно задать события только в классах Handle. Это ограничение существует, потому что класс значения видим только в единственном MATLAB workspace так никакой обратный вызов, или прослушиватель может иметь доступ к объекту, который инициировал событие. Обратный вызов мог иметь доступ к копии объекта. Однако доступ к копии не полезен, потому что обратный вызов не может получить доступ к текущему состоянию объекта, который инициировал событие, или вызовите любые изменения в том объекте.

Сравнение Классов Указателя и Значения предоставляет общую информацию относительно классов Handle.

Синтаксис Событий и Прослушивателей показывает синтаксис для определения класса Handle и событий.

Набор свойств и События запроса

Существует четыре предопределенных события, связанные со свойствами:

  • PreSet — Инициированный непосредственно перед тем, как значение свойства установлено, прежде, чем вызвать его метод доступа набора

  • PostSet — Инициированный сразу после того, как значение свойства установлено

  • PreGet — Инициированный непосредственно перед тем, как запрос значения свойства обслуживается, прежде, чем вызвать получать метод доступа

  • PostGet — Инициированный сразу после возврата значения свойства к запросу

Эти события предопределены и не должны быть перечислены в классе блок events.

Когда событие свойства имеет место, обратный вызов передается объект event.PropertyEvent. Этот объект имеет три свойства:

  • EventName Имя события описано этим объектом данных

  • Source — Исходный объект, класс которого задает событие, описанное по условию, возражает

  • AffectedObject — Объект, свойство которого является источником для этого события (то есть, AffectedObject содержит объект, к свойству которого или получили доступ или изменили).

Можно задать собственные данные о событиях изменения свойства путем разделения на подклассы event.EventData Класс EventData. Класс event.PropertyEvent является изолированным подклассом event.EventData Данные о событиях.

Смотрите Прислушиваются к Изменениям в Значениях свойств для описания процесса для создания прослушивателей свойства.

Смотрите Прослушиватель События PostSet для примера.

См. Методы доступа к свойствам для получения информации о методах, которые управляют доступом к значениям свойств.

Прослушиватели

Прослушиватели инкапсулируют ответ на событие. Объекты прослушивателя принадлежат классу event.listener, который является классом Handle, который задает следующие свойства:

  • Source — Указатель или массив указателей объекта, который сгенерировал событие

  • EventName Имя события

  • 'callback' Функция, чтобы выполниться, когда активированный прослушиватель получает уведомление о событии

  • Enabled — Функция обратного вызова выполняется только, когда Enabled является true. Смотрите Включают и Отключают Прослушиватели для примера.

  • Recursive — Позвольте прослушивателю инициировать то же событие, которое вызвало выполнение обратного вызова.

    Recursive является false по умолчанию. Если обратный вызов инициировал событие, для которого он задан как обратный вызов, прослушиватель не может выполниться рекурсивно. Поэтому установите Recursive на false, если обратный вызов должен инициировать свое собственное событие. Установка свойства Recursive к true может создать ситуацию, где бесконечная рекурсия достигает предела рекурсии и инициировала ошибку.

Управление жизненным циклом приемника предоставляет более определенную информацию.

Была ли эта тема полезной?