Xamarin.Forms.Device.StartTimer - 无法捕获精确的秒或毫秒

时间:2017-02-15 17:28:54

标签: xamarin timer xamarin.forms

我的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.!");
});

上面的代码只会在它之间执行最后一个代码。我同时尝试了SecondsTotalSeconds以及MilliSecondsTotalMilliseconds。当我尝试使用平等时,它不起作用。它只在大或小时才有效。

1 个答案:

答案 0 :(得分:0)

TotalSecondsTotalMilliseconds作为double的小数部分返回,因此您的检查将失败。 您可以将该值解析为int或使用它:

if(Math.Abs(ts.TotalSeconds - 60) <= 1)
    ...