有时,当我从背景线程调用RaiseEvent CanExecuteChanged(sender, EventArgs.Empty)
时,它给了我一个异常,声明“调用线程不能访问此对象,因为不同的线程拥有它”。WPF:CurrentDispatcher.CheckAccess和CanExecuteChanged出现问题
但是,如果我拨打System.Windows.Threading.Dispatcher.CurrentDispatcher.CheckAccess
则返回True。
我在做什么错?
Private Sub m_Parent_PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Handles m_Parent.PropertyChanged
If System.Windows.Threading.Dispatcher.CurrentDispatcher.CheckAccess Then
RaiseEvent CanExecuteChanged(sender, EventArgs.Empty)
Else
End If
End Sub
能否请您提供关于在异常被抛出从信息?你暗示对RaiseEvent的调用抛出异常,但事实上,它将处理你的CanExecuteChanged事件。堆栈跟踪将很有用。如果它看起来确实来自RaiseEvent,那么可能意味着该异常来自.NET Framework类。在这种情况下,右键单击堆栈跟踪,然后启用该选项以显示“外部代码”以查看其来源。 – 2010-11-04 23:22:37
问题是'CurrentDispatcher.CheckAccess'不是有效的设计模式。您需要检查与接收事件的对象关联的调度程序。 – 2010-11-07 10:02:03
嗨, 我有完全相同的问题,你可以请详细解释引用主线程的调度? 非常感谢。 – 2011-03-08 07:24:48