czwartek, 12 lipca 2012

Must create DependencySource on same Thread as the DependencyObject. Przeciwdziałanie!

Wiadomo, że aktualizowanie danych miedzy programem a bazą danych może zająć chwilę.
Aby użytkownik był świadom tego co się w danej chwili wykonuję dobrze jest wyświetlić wskaźnik postępu a operacje na danych wykonać w wątku pobocznym programu.
Podczas takich operacji otrzymałem błąd "Must create DependencySource on same Thread as the DependencyObject."
Komunikat błędu jest dosyć jasny, jednak znalezienie w dużym projekcie powodu jego wystąpienia już nie jest takie łatwe.
Wracając do meritum, problem powodowała "Bitmap'a" "zbindowany" był do okna.
Gdy bitmap'a była utworzona w głównym wątku wszystko przebiegało poprawnie, jednak gdy została stworzona w wątku pobocznym występował powyższy błąd.
Rozwiązaniem takiego problemu jest wykorzystanie metody "Freeze", dla obrazów tworzonych poza głównym wątkiem.
 
    BitmapImage bitmap = new BitmapImage();
    if(bitmap.CanFreeze)
        bitmapImage.Freeze();
was

Brak komentarzy:

Prześlij komentarz