我声明了一个字段:
WriteableBitmap colorBitmap;
然后我创建了一个简单的线程来执行某些操作:
private void doSomething()
{
// ... bla bla bla
colorBitmap = new WriteableBitmap(/* parameters */);
myImage.Source = colorBitmap; // error here:S
}
在Windows_Loaded事件中,我声明并启动了一个新线程:
private void window_Loaded(object sender, RoutedEventArgs e)
{
Thread th = new Thread(new ThreadStart(doSomething));
th.Start();
}
问题在于我无法更改myImage的源。我收到了以下错误:
InvalidOperationException未处理 因为不同的线程拥有它,所以调用线程无法访问该对象。
我尝试使用Dispatcher.Invoke,但没有帮助...
Application.Current.Dispatcher.Invoke((Action)delegate
{
myImage.Source = colorBitmap;
});
我一直在寻找答案,但是从来没有找到和我的情况完全相同的案例。请问有人能帮我理解如何解决这类问题吗?(我最近也遇到了同样的问题,但我无法调用该方法,因为其他线程已经拥有它)。
WriteableBitmap
(因为某些愚蠢的原因)。不确定为什么在将其分派到主线程后它仍然无法工作。也许可以尝试使用myImage.Dispatcher.Invoke
而不是Application.Current.Dispatcher.Invoke
? - Chris Sinclair