Я использую элемент управления, который необходимо зарегистрировать для асинхронных событий.
События будут генерироваться в потоке пользовательского интерфейса с использованием интерфейса ISynchronizeInvoke , реализованного элементами управления WinForms
Я не могу зарегистрироваться на событие в конструкторе, потому что это позволит вызвать обработчик событий до того, как элемент управления будет полностью создан. во время которого вызовы ISynchronizeInvoke не разрешены.
Решение этой проблемы заключается в использовании асинхронной регистрации события из обработчика события в HandleCreated вместо регистрации в конструкторе.
однако это создает другую проблему, в некоторых случаях событие HandleCreated вызывается многократно в результате изменения состояния управления.
Например, каждое изменение свойства «RightToLeft» вызывает сообщение WMCreate, которое вызывает событие «HandleCreated».
Как я могу предотвратить умножение времени нарастания события?
Есть ли другой способ узнать, когда элемент управления создается и отображается впервые?
Я могу сохранить логический флаг в HandleCreated, однако это похоже на взлом, и мне интересно, есть ли лучший способ справиться с этой проблемой.