C # UserControl BeginInvoke Проблема - PullRequest
2 голосов
/ 12 января 2010

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

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

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

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

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

1 Ответ

4 голосов
/ 12 января 2010

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

  1. Обработчик события Control.HandleCreated
  2. Переопределение контроля. OnHandleCreated

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

...