我的Xamarin.Forms应用程序中有一个计数器,我尝试在达到精确的秒或毫秒时执行语音,但它永远不会被执行。
以下是代码示例:
Xamarin.Forms.Device.StartTimer(TimeSpan.FromMilliseconds(1000), () =>
{
ts = sw.Elapsed;
lblTimer.Text = String.Format("{0:00}:{1:00}", ts.Minutes, ts.Seconds);
if (ts.Seconds == 45)
Plugin.TextToSpeech.CrossTextToSpeech.Current.Speak("45 seconds");
if (ts.TotalSeconds == 60)
Plugin.TextToSpeech.CrossTextToSpeech.Current.Speak("120 seconds");
if (ts.TotalSeconds > 60 && ts.TotalSeconds <61)
Plugin.TextToSpeech.CrossTextToSpeech.Current.Speak("1 minute.!");
});
上面的代码只会在它之间执行最后一个代码。我同时尝试了Seconds
和TotalSeconds
以及MilliSeconds
和TotalMilliseconds
。当我尝试使用平等时,它不起作用。它只在大或小时才有效。
答案 0 :(得分:0)
TotalSeconds
和TotalMilliseconds
作为double的小数部分返回,因此您的检查将失败。
您可以将该值解析为int或使用它:
if(Math.Abs(ts.TotalSeconds - 60) <= 1)
...