Timer doesn't contain in System.Threading at Xamarin.Forms

前端 未结 3 675
北海茫月
北海茫月 2021-01-14 11:29

I used System.Threading.Timer in Xamarin.Android.

How I can use the same class in Xamarin.Forms? (I want to transfer my projec

相关标签:
3条回答
  • 2021-01-14 12:11

    Hi I found solution for the timer in Xamarin.forms

    1. Device.StartTimer(TimeSpan.FromMilliseconds(1000), OnTimerTick); // TimeSpan.FromMilliseconds(1000) specify the time in milisecond //OnTimerTick it is function that will be executed return boolean

      1. private bool OnTimerTick() { // code to be executed lblTime.Text = newHighScore .ToString(); newHighScore++; return true; }

    I hope you get my point easily thanks.

    0 讨论(0)
  • 2021-01-14 12:19

    For PCL you can create your own using async/await features. Another advantage of this approach - your timer method implementation can await on async methods inside timer handler

    public sealed class AsyncTimer : CancellationTokenSource
    {
        public AsyncTimer (Func<Task> callback, int millisecondsDueTime, int millisecondsPeriod)
        {
            Task.Run(async () =>
            {
                await Task.Delay(millisecondsDueTime, Token);
                while (!IsCancellationRequested)
                {
                    await callback();
                    if (!IsCancellationRequested)
                        await Task.Delay(millisecondsPeriod, Token).ConfigureAwait(false);
                }
            });
        }
    
        protected override void Dispose(bool disposing)
        {
            if (disposing)
                Cancel();
    
            base.Dispose(disposing);
        }
    }
    

    Usage:

    {
      ...
      var timer = new AsyncTimer(OnTimer, 0, 1000);
    }
    
    private async Task OnTimer()
    {
       // Do something
       await MyMethodAsync();
    }
    
    0 讨论(0)
  • 2021-01-14 12:27

    System.Threading.Timer is not available in PCL code. You can use the Xamarin.Forms.Device.StartTimer method instead as explained here: http://developer.xamarin.com/api/member/Xamarin.Forms.Device.StartTimer/

    0 讨论(0)
提交回复
热议问题