C# UserControl BeginInvoke Проблема

У меня есть пользовательский элемент управления C#, который имеет свой собственный фоновый рабочий поток. Этот рабочий поток запускается в конструкторе элемента управления и останавливается при удалении элемента управления.

Поток периодически вызывает метод BeginInvoke с делегатом, но иногда возникает исключение "Invoke или BeginInvoke не могут быть вызваны для элемента управления, пока не будет создан дескриптор окна". occoures.

Теперь я спрашиваю вас, как я могу проверить, возможен ли вызов BeginInvoke из моего рабочего потока, чтобы он не вызывал, пока элемент управления не создан полностью?

Эта проблема возникает только при компиляции релиза. Не в режиме отладки.

с наилучшими пожеланиями

1 ответ

Решение

Рабочий поток должен быть создан внутри... (у вас есть два варианта):

  1. Обработчик события Control.HandleCreated
  2. Переопределяющий элемент управления. OnHandleCreated

Что вам нужно знать, так это то, что элемент управления не может быть полностью создан (готов к использованию) даже после завершения выполнения конструктора.

Другие вопросы по тегам