«Invoke или BeginInvoke не могут быть вызваны ...» при закрытии окна - PullRequest
0 голосов
/ 26 марта 2012

Хорошо, есть много вопросов по этой ошибке, но я не могу найти решение для моей проблемы.У меня есть поток, который загружает элемент управления из базы данных во время длительной работы.Если я закрываю свое окно до завершения этого потока, он выдает Invoke or BeginInvoke cannot be called on a control until the window handle has been created., когда Invoke

Я изменил код так, чтобы он выглядел следующим образом:

If Not Me.IsDisposed And Me.Created And Me.IsHandleCreated Then '
      Me.Invoke(New AddImageDelegate(AddressOf AddImage), item.PartNo, New Bitmap(item.ImagePath))
      Me.Invoke(New SetImageDelegate(AddressOf SetImage), I, item.PartNo)
End If

Однако он все равно попадает в строку Invoke и выдает ошибку.Когда отладка останавливается на исключении, IsDisposed - это истина, .Created - это ложь, а .IsHandleCreated - это ложь.Поэтому проверка этих свойств не помогает.

Итак ... как мне предотвратить запуск строки вызова в этой ситуации?

1 Ответ

1 голос
/ 26 марта 2012

Может быть, Invoke был вызван до того, как ваша форма была закрыта?

Вместо того, чтобы делать Если бы я рекомендовал не закрывать форму, пока вам не удастся остановить второй поток, это намного безопаснее.

...