1
私はVB.NETとWPFには比較的新しいので、基本的なスレッディングに関する質問があります。VB.NET WPFスレッディング
私は、NavigationServiceを使用しているページの中でタイマーを使用する方法を理解しようとしています。ここで私が持っているものです。
Public Class SplashPage
Inherits Page
Public Sub New(ByVal oData As Object)
StartTimer(5000)
End Sub
Public Sub StartTimer(ByVal iInterval As Double)
Dim timeoutTimer As New System.Timers.Timer
timeoutTimer.Interval = 5000
timeoutTimer.Enabled = True
'Function that gets called after each interval
AddHandler timeoutTimer.Elapsed, AddressOf OnTimedEvent
End Sub
Public Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
If NavigationService.CanGoBack Then
NavigationService.GoBack()
End If
'MessageBox.Show(e.SignalTime)
End Sub
End Class
NavigationService.CanGoBack文はエラーメッセージを引き起こしている:「別のスレッドがそれを所有しているので、呼び出し元のスレッドがこのオブジェクトにアクセスすることはできません」
ご意見やご提案をいただければ幸いです。ありがとう!
- MG
に触れる前に戻ってUIスレッドに取得するために
SynchronizationContext.Post
を使用する必要があります「オブジェクト参照がオブジェクトのインスタンスに設定されていません」 – zzMzz@MikeG ym bad。私はそれを修正するコードを変更 – JaredPar
私の質問に答えを提供してくれてありがとうJared!私はまた、System.Windows.Threading.DispatcherTimerが、上記のタイマーを使用して実行した面倒なことなしに、必要なことをしたことも発見しました。 – zzMzz