私はVB.Net 4.0の依存プロパティをAsyncコールバック内で更新しようとしています。私はこれを正しくやっているように感じるが、私はまだ "呼び出しスレッドはこのオブジェクトにアクセスすることができません。別のスレッドがそれを所有しているからです。"エラー。誰かがVB.Net 4.0でデリゲートを使う良い方法を見ていますか?WPFで依存関係のプロパティを変更するUIスレッドにアクセス
Private WithEvents myObj as CallingObject
Private Delegate Sub MyErrorDel(ByVal strError as string)
Public Property ErrorMessage As String
Get
Return CStr(GetValue(ErrorMessageProperty))
End Get
Set(ByVal value As String)
SetValue(ErrorMessageProperty, value)
End Set
End Property
Private Sub MySub()
myObj.CallFuncAsync()
End Sub
Private Sub DisplayError(ByVal strError as String)
'Set Dependancy Property value Bound to UI Textbox
ErrorMessage = strError
End Sub
Private Sub myObj_CallFuncCompleted(Byval sender as Object, ByVal e as CallFuncEventArgs)
'Call delegate and pass in error string as argument
Dim delError as MyErrorDel
delError = New MyErrorDel(AddressOf DisplayError)
delError("An error occured")
Me.Dispatcher.Invoke(delError, System.Windows.Threading.DispatcherPriority.Normal, Nothing)
End Sub
例外がスローされますDisplayErrorの内側にErrorMessageが、私はDisplayErrorを呼び出すためにディスパッチャを使用していていても、設定されますたび。
非同期コールバックからDependancy Propertiesにアクセスしようとしたときに問題が発生した場合は、フィードバックに感謝します。
ありがとうございました!
ああ、私はコードの問題についてブログでかなり新しいです。この質問をより適切に策定する方法についてのご意見もお待ちしております。