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

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

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

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

  • Осуществление метода

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

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

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

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

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

Ограничения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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