Dispatcher.invoke проблема в классе: C # - PullRequest
0 голосов
/ 14 сентября 2018

вот часть моего кода:

public void refreshShowCase()
{

    for (int i = 0; i < 12; ++i)
    {
        bitmapImage[i] = new BitmapImage(new Uri(posterURLCollection[i]));
        image[i] = new Image { Source = bitmapImage[i] }; //Error occurs here****
    }
}

когда я запускаю это, я получаю эту ошибку: вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса.

Поэтому я добавляю свой код внутрь Disapther.Invoke

this.Dispatcher.Invoke((Action)delegate
{
   BitmapImage[] bitmapImage = new BitmapImage[14];
   Image[] image = new Image[14];

   //Do a loop for defining Bitmaps sources
   for (int i = 0; i < 12; ++i)
   {
         bitmapImage[i] = new BitmapImage(new Uri(posterURLCollection[i]));
         image[i] = new Image { Source = bitmapImage[i] };
   }
}

Теперь у меня есть эта ошибка: «Диспетчер» не существует в текущем контексте!

Как мне решить это? Пожалуйста помоги.

Обновление1: упомянутый код внутри void класса, который я создал!

1 Ответ

0 голосов
/ 14 сентября 2018

В вашем вопросе вы используете this.Dispatcher.Invoke((Action)delegate внутри пользовательского класса. this относится к функциям внутри этого класса. Ваш пользовательский класс не имеет Dispatcher.

Вместо этого используйте: App.Current.Dispatcher.Invoke((Action)delegate и убедитесь, что ваш пользовательский класс, содержащий этот код, попадает в ваше пространство имен App.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...