我试图在WPF中更改图像源,它抛出“System.InvalidOperationException”异常(“调用线程无法访问此对象,因为另一个线程拥有它。”),现在,我试图将代码放入Application.Current.Dispatcher.Invoke(Action)块中,但它仍然抛出错误,这可能与我试图从异步方法更改图像有关,如下所示:
// Calling ChangeImage here
public async void LocalKill()
{
for (int i = 0; i < 12; i++)
{
sprite.ChangeImage("@$\"Resources\\Images\\Player\\PlayerDeath{i % 2 + 1}.png\"");
await Task.Delay(1000 / 10);
}
}
// In "Sprite" class
public void ChangeImage(string imagePath)
{
var bitmap = BitmapFromPath(imagePath);
// UI Objects need to be changed in an STA thread
Application.Current.Dispatcher.Invoke(() => image.Source = bitmap);
}
我试着改变图像源,期望它改变图像的视觉,但相反,它抛出了错误
1条答案
按热度按时间e4eetjau1#
使用与
Image
元素关联的分派器,并在位图上调用Freeze()
。