有時,當我從背景線程調用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