У меня есть счетчик в приложении Xamarin.Forms, и я пытаюсь выполнить речь сразу, когда она достигает точных секунд или миллисекунд, но никогда не выполняется.Xamarin.Forms.Device.StartTimer - не удается поймать точную секунду или миллисекунду
Вот пример кода:
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
. Когда я пытаюсь использовать равное, это не работает. Он работает только тогда, когда он больше или меньше.
Каждая платформа имеет различные реализации таймера (на Android они используют частные 'Looper') и должен вызвать функцию обратного вызова ** после ** Ваш Разрыв в 1000 мс закончился, ваш 'Истекший' никогда не будет * гарантирован *, чтобы соответствовать вашему интервалу интервалов времени ... – SushiHangover
не против небольшой выборки или если вы знаете ссылку на нее? – batmaci
Образец чего? – SushiHangover