将对象作为参数传递给WPF中的Dispatcher.Invoke

将对象作为参数传递给WPF中的Dispatcher.Invoke,wpf,vb.net,invoke,dispatcher,Wpf,Vb.net,Invoke,Dispatcher,我已在新线程中创建了BitmapImage变量,需要将其作为Dispatcher.BeginInvoke的参数传递给UI线程 但出现了错误: 调用的目标已引发异常 mscorlib.dll中发生类型为“System.Reflection.TargetInvocationException”的未处理异常 这是我的代码: Public Delegate Sub NewDeleSub(ByVal InputImage As BitmapImage) Private MyThread As Thread

我已在新线程中创建了BitmapImage变量,需要将其作为Dispatcher.BeginInvoke的参数传递给UI线程

但出现了错误:

调用的目标已引发异常

mscorlib.dll中发生类型为“System.Reflection.TargetInvocationException”的未处理异常

这是我的代码:

Public Delegate Sub NewDeleSub(ByVal InputImage As BitmapImage)
Private MyThread As Thread


Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded

    MyThread = New Thread(AddressOf NewThread)
    MyThread.SetApartmentState(ApartmentState.STA)
    MyThread.Start()

End Sub

Private Sub NewThread()

    Dim InImage As New BitmapImage(New Uri("Image Path"))
    Me.Dispatcher.BeginInvoke(New NewDeleSub(AddressOf RotateImage), InImage)

End Sub

Private Sub RotateImage(ByVal Img As BitmapImage)

    Dim OurImg As New Image
    OurImg.Source = Img

End Sub
在这些行中发生了错误:

Private Sub RotateImage(ByVal Img As BitmapImage)

    Dim OurImg As New Image
    OurImg.Source = Img

End Sub

最后,我找到了答案。它只需要使用InImage.Freez就可以在线程之间进行发送。

错误是调用字符串的目标引发了异常&整数可以作为参数传递给Dispatcher.Invoke,但对象变量不能。如何发送对象?为什么您认为对象不能被传递?不要从你的问题中推断出来。我猜在RotateImage方法中有更多的代码?因为只有这两行代码,我不认为这里有任何异常,OurImg只是一个新控件,甚至没有设置任何父控件。问题是在将BitmapImage对象发送到sub-RotateImage后,发生了错误。引发异常的确切行是哪一行?如果尝试注释掉那一行,甚至是RotateImage中的所有代码,会怎么样?