Cross-thread operation not valid

0

Cześć

W sprawie wyjątku InvalidOperationException i komunikatu:

Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on

W drodze wprowadzenie:

  • wiem kiedy generowany jest ten wyjątek
  • wiem, że należy użyć Invoke, żeby nie był generowany

To wszystko można przeczytać w dokumentacji. Problem polegana tym, że w moim przypadku
wyjątek ten jest genrowany w takim miejscu w którym nie powinien. Sprawdziłem w debugu i kontrolka
jest tworzona w tym samym wątku, w którym następuje powodujące błąd odwołanie do niej.

Dodatkowo błąd ten pojawia się w dwóch różnych miejscach w zależności od sposobu uruchomienia apliakacji. Jeśt aplikacja zostanie uruchomiona z dwukliku błąd powstanie przy odwołaniu do jednej kontrolki. Przy uruchomieniu aplikacji z VisualStudio błąd pojawi się przy odwołaniu do innej kontrolki.

W każdym razie sprawa jest dla mnie dziwna. Jeśli ktoś spotkał się już z czymś takim
to proszę o uwagi.

0

Pamietaj, ze nieobsluzone exceptiony powstale na innym watku w .net 2.0 forwardowane sa do watku glownego. Przez to mozna pomylic sie co faktycznie na ktorym watku sie stalo. Sam kiedys stracilem na szukaniu bledu, ktory tak naprawde lezal gdzie indziej a przez forwardniecie errora ciagle grzebalem nie tam gdzie trzeba.

Najprosciej mozesz sprawdzic atrybut InvokeRequired czy dana operacja przypadkiem nie wymaga wykonania na watku GUI. Jesli tak, to odpowiednio Invokujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1