2017-08-25 1 views
0

meiner android app läuft slow.Operation wie Navigation stoppen, vor allem sehr slow.i gebrauchte Timer von codes.now unten i-Timer gestoppt werden soll, wenn ich klicken? Wie kann eswie Timer task.delay in Xamarin android

void ChangedData() 
{ 
    Task.Delay(500).ContinueWith(t => 
    { 
     ChangedData(); 
    }, TaskScheduler.FromCurrentSynchronizationContext()); 

} 
+0

Wenn Sie einen Timer möchten, können Sie steuern, warum nicht die eigentliche Timer-Klasse verwenden? – Jason

Antwort

1
using System.Timers; 

Timer timer = new Timer(500); 
timer.Elapsed += (sender, e) => { ChangedData(); }; 
timer.Start(); 

// to stop the Timer 
timer.Stop(); 
0

Erstellen Sie eine CancellationTokenSource irgendwo in Ihrem Code.

Dann rufen Task.Delay mit CancellationToken in der Methode übergeben.

Task.Delay(500, _cts.Token) 

die Aufgabe zu löschen, rufen Sie einfach Methode der CancellationTokenSource Abbrechen

_cts.Cancel(); 

Wenn die Aufgabe abgebrochen wird, wird es TaskCanceledException werfen. Bitte denken Sie daran, die Ausnahme zu fangen.

try 
{ 
    Task.Delay(500, _cts.Token).ContinueWith(t => 
     { 

      ChangedData(); 

     }, TaskScheduler.FromCurrentSynchronizationContext()); 
} 
catch (TaskCanceledException ex) 
{ 
    // Handle when task is cancelled. 
}