I used System.Threading.Timer
in Xamarin.Android
.
How I can use the same class in Xamarin.Forms
?
(I want to transfer my projec
Hi I found solution for the timer in Xamarin.forms
Device.StartTimer(TimeSpan.FromMilliseconds(1000), OnTimerTick);
// TimeSpan.FromMilliseconds(1000) specify the time in milisecond
//OnTimerTick it is function that will be executed return boolean
private bool OnTimerTick() { // code to be executed lblTime.Text = newHighScore .ToString(); newHighScore++; return true; }
I hope you get my point easily thanks.
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();
}
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/