Интерфейс ISupportlnitializeNotification: поддержка инициализации взаимосвязанных компонентов

благодаря этому объект зависящий от

Интерфейс ISupportlnitializeNotification Позволяет взаимосвязанным дочерним компонентам получать уведомления о том, что другие объекты закончили инициализацию. Благодаря этому объект, зависящий от состояния другого объекта, может подождать, пока другой объект не закончит свою инициализацию, прежде чем сам попытается завершить свою инициализацию. Только что обсуждавшийся интерфейс ISupportlnitialize Помогает работать с компонентами, свойства которых взаимосвязаны внутри самого компонента. Но что, если у нас имеется несколько компонентов, которые взаимосвязаны в смысле порядка их инициализации? Например, при установке привязки данных вы часто привязываете элемент управления к BindingSource, А затем BindingSource К набору данных. Устанавливаемые во время инициализации свойства BindingSource Будут, вероятно, ссылаться на таблицу в наборе данных. Но таблица в наборе данных, возможно, создается в процессе инициализации набора данных. Таким образом, если Endlnit Для источника привязки вызывается раньше, чем будет вызван Endlnit Для набора данных, набор данных не завершит свою инициализацию, которая делает таблицу доступной для источника привязки. В результате, если источник привязки попытается начать итерацию по данным таблицы, пользователь получит сообщение об ошибке, поскольку требуемая таблица не будет найдена. Чтобы сделать это более наглядным, давайте возьмем класс SomeCon — Tainerclass Из листинга 7.1 в качестве источника данных для источника привязки. Следующий код показывает обработчик события Load Для формы, который использует методы поддержки инициализации, но вызывает Endlnit В неправильном порядке, что ведет к непредсказуемым результатам. Проблема этого кода в том, что поскольку Endlnit Вызывается для источника привязки Раньше, чем для объекта данных, привязка будет производиться при незавершенной инициализации объекта данных. Нам нужен способ гарантировать, что подобные взаимосвязанные объекты будут инициализироваться в правильном порядке. В. NET 2.0 имеется новый интерфейс Говоря конкретнее, интерфейс ISupportlnitializeNotification Позволяет компоненту попросить другой компонент уведомить его, когда он, компонент Б, завершит свою инициализацию. Это позволяет компоненту А подождать, пока компонент Б не завершит свою инициализацию, прежде чем завершить свою собственную, компонента А, инициализацию.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *