Как получить истекшее время в формах Xamarin

#c# #xamarin.forms #mvvm

Вопрос:

Я хочу, чтобы мой таймер продолжался с момента его запуска до настоящего времени, мне нужна помощь с логикой, которая использует интервал времени для вычисления времени, прошедшего с момента запуска таймера до текущего времени, Вот что я сделал:

 CancellationTokenSource cts = _cancellationTokenSource; // safe copy

       
          //Timer Starts here
         _TimeSpan = TimeSpan.FromMinutes(TimeSheet.TotalTime);
      

       //Increment timer by a second interval
        Device.StartTimer(TimeSpan.FromSeconds(1), () => {

            if (cts.IsCancellationRequested)
            {
                return false;
            }
            else
            {
                Device.BeginInvokeOnMainThread(() => {

                     _TimeSpan  = TimeSpan.FromSeconds(1);

                    displaytime = _TimeSpan.ToString(@"h:m:s");
                    TimeSheet.TotalTimeForDisplay = displaytime;

                    Console.WriteLine("Timer");
                    Console.WriteLine(displaytime);

                });

                return true;

            }
 

Комментарии:

1. @Джейсон, похоже, у класса секундомера нет параметров, чтобы указать, где должен начинаться секундомер

2. Я бы использовал что-то из Системы. Вместо этого реактивный набор инструментов. Там есть хорошие наблюдаемые параметры, такие как интервал, тайм-аут и т. Д.

Ответ №1:

использовать System.Timers.Timer

 // use whatever start time you need
DateTime start = DateTime.Now;

// 1000ms = 1s
System.Timers.Timer timer = new System.Timers.Timer(1000);

timer.Elapsed  = OnTimedEvent;

timer.Start();
 

затем

 private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    var elapsed = DateTime.Now - start;
}
 

Комментарии:

1. Для моего таймера запуска я использую _TimeSpan = Промежуток времени. От минут(расписание. totalTime); нужно ли мне конвертировать в DateTime?

2. Я не знаю. Вы не описали, каковы ваши требования, поэтому я не могу сказать, какова правильная ценность для использования.