Я пытаюсь обновить ImageSource с изображением на время выполнения из другого потока затем в main_UI один, но по какой-то причине я получаю: The calling thread cannot access this object because a different thread owns it.
Я попробовал несколько вещей, :C# WPF изменения ImageSource Изображение на тему
im_Cover.Dispatcher.Invoke(() => { if (im_Cover.Source != image) im_Cover.Source = image; });
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { im_Cover.Source = image; }));
- Фиксация изображения (которое не было возможно). Я попытался добавить сообщение об ошибке и после появления ошибки, и я нажал ОК, по какой-то причине изображение загрузилось.
- Пробовал использовать пользовательский загрузочный обработчик событий, который даже не срабатывал.
Вот мой код:
for (int i = 1; i < correctArtist.images.Count; i++)
{
if (correctArtist.images[i].width > correctArtist.images[biggest].width)
biggest = i;
}
Image biggestImage = correctArtist.images[biggest];
var imgUrl = biggestImage.url;
image = new BitmapImage(new Uri(imgUrl));
bool uiAccessCover = im_Cover.Dispatcher.CheckAccess();
if (uiAccessCover)
{
im_Cover.Source = image;
}
else
{
//im_Cover.Dispatcher.Invoke(() => { if (im_Cover.Source != image) im_Cover.Source = image; });
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { im_Cover.Source = image; }));
}
И по какой-то причине этого: lb_Song.Dispatcher.Invoke(() => { if ((string)lb_Song.Content != song) lb_Song.Content = song; });
работает.
Любая идея, почему это не работает, и как я могу это исправить?
Вы, сэр, спасатель. Благодаря!! – Remco1250