【发布时间】:2014-07-16 21:11:05
【问题描述】:
我在新线程中创建了一个 BitmapImage 变量,需要作为 Dispatcher.BeginInvoke 的 Argument 传递给 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
【问题讨论】:
-
错误是异常被调用的目标抛出
-
String & Integers 可以作为参数传递给 Dispatcher.Invoke,但对象变量不能。如何发送对象?
-
为什么认为object不能通过?不要从你的问题中得出这个结论。我猜您在
RotateImage方法中有更多代码?因为只有这两行代码,我认为这里没有任何异常,OurImg只是一个新控件,甚至没有设置任何父控件。 -
问题是发送BitmapImage对象到子RotateImage后,发生错误。
-
抛出异常的确切行是什么?如果尝试注释掉该行(甚至
RotateImage中的所有代码)会怎样?
标签: wpf vb.net invoke dispatcher