我将VB .NET桌面代码转换为在Windows Phone 8.1上运行。 在我的MainPage.xml.vb中,我通过文字转语音引擎向用户呈现音频菜单。
读取1个菜单项后(),我需要给用户一定的时间做出反应。在我的桌面应用程序中,我能够使用这样的东西:
Sub PresentMenuItem(mi as MyMenuItem)
TTS.Speak(mi.Text)
TimeoutTimer.Interval = 2000 'ms
TimeoutTimer.Start()
Do While TimeoutTimer.IsEnabled = true
Application.DoEvents()
Loop
End Sub
在Windows手机上没有DoEvents()
,也似乎没有干净的编程。有什么样的可能性来解决这个问题?请帮助,谢谢。
EDIT1
更具体我想做什么: 我有一个字符串列表,我想通过文本到语音读取给用户。在读取字符串[i.name]之后,如果在显示器上绘制手势,它将查找1.5秒。如果绘制,则等待进程停止,因为用户进行了选择。如果1.5秒后没有画出手势,等待过程也会停止。 我能够接收在触摸屏上绘制的手势,但我完全停留在如何正确地进行等待过程。
Partial Public Class MainPage
Inherits PhoneApplicationPage
Friend Class MenuPage
Friend Overrides Async Sub Provide()
Dim items = PageItems.Where(Function(c) c.Level = "1")
Dim GIR As New GestureInputReceiver()
For Each i In items
Await TTS.Speak(i.Name)
GIR.HookGestures(1500)
'HERE i want to the app to have waited 1.5 seconds
'and then be able to know the received Gesture, like:
'Select Case GIR.LastGesture
' Case 0
' DoWhatever()
'End Select
Next
End Sub
End Class
Friend Class GestureInputReceiver
Dim WithEvents TimeoutTimer As New DispatcherTimer()
Dim WithEvents GestureCheckerTimer As New DispatcherTimer()
Public Sub New()
GestureCheckerTimer.Interval = New TimeSpan(0, 0, 0, 0, 100)
End Sub
Friend Sub HookGestures(ms As Integer)
TimeoutTimer.Interval = New TimeSpan(0, 0, 0, 0, ms)
TimeoutTimer.Start()
GestureCheckerTimer.Start()
End Sub
Private Sub TimeoutTimer_Tick(sender As Object, e As EventArgs) Handles TimeoutTimer.Tick
If TimeoutTimer.IsEnabled = True Then
GestureCheckerTimer.Stop()
TimeoutTimer.Stop()
End If
End Sub
Private Sub GestureCheckerTimer_Tick(sender As Object, e As EventArgs) Handles GestureCheckerTimer.Tick
'if GestureReceived() = True Then ExitBothTimers() + SetLastGesture()
End Sub
End Class
任何帮助表示赞赏!感谢。