Ich erstelle eine Xamarin Cross-Plattform-App für IOS Android und Windows Phone 8.1 mit .Net 4.5.1. Wenn ich versuche, System.Timers im PCL-Projekt zu referenzieren, ist es nicht da. Wie behebe ich das?System.Timer fehlt in Xamarin PCL
Antwort
können Sie verwenden: Device.StartTimer
Syntax:
public static void StartTimer (TimeSpan interval, Func<bool> callback)
Beispiele: Schrittzahl alle 1 Sekunden 1 Minute
int number = 0;
Device.StartTimer(TimeSpan.FromSeconds(1),() => {
number++;
if(number <= 60)
{
return true; //continue
}
return false ; //not continue
});
Beispiele: 5 Sekunden warten Funktion auszuführen einmal
Device.StartTimer(TimeSpan.FromSeconds(5),() => {
DoSomething();
return false ; //not continue
});
** Device.StartTimer ** ist nur ein Teil von ** Xamarin.Forms ** und es ist nicht kompatibel mit der ** Portable Klassenbibliothek ** von Xamarin Native Development ** oder ** Shared Library ** –
Das ist mir neulich aufgefallen. Obwohl die Klasse in der API-Dokumentation System.Threading.Timer Class ..Annoying ist.
Auf jeden Fall habe ich meine eigene Timer-Klasse, mit Task.Delay()
:
public class Timer
{
private int _waitTime;
public int WaitTime
{
get { return _waitTime; }
set { _waitTime = value; }
}
private bool _isRunning;
public bool IsRunning
{
get { return _isRunning; }
set { _isRunning = value; }
}
public event EventHandler Elapsed;
protected virtual void OnTimerElapsed()
{
if (Elapsed != null)
{
Elapsed(this, new EventArgs());
}
}
public Timer(int waitTime)
{
WaitTime = waitTime;
}
public async Task Start()
{
int seconds = 0;
IsRunning = true;
while (IsRunning)
{
if (seconds != 0 && seconds % WaitTime == 0)
{
OnTimerElapsed();
}
await Task.Delay(1000);
seconds++;
}
}
public void Stop()
{
IsRunning = false;
}
}
'warten Task.Delay (1000);'. Warum 1000 und nicht WaitTime? – AR89
@ AR89 Guter Punkt, es könnte umgestaltet werden, um 'WaitTime' zu verwenden. In dem Moment, in dem es sich um jede "Sekunde" (Task.Delay (1000)) zyklisch dreht, vergleicht jede "Sekunde" ihren Wert mit "WaitTime", um zu sehen, ob es das "TimerElapsed" -Ereignis – user1
'task Task.Delay auslösen muss (1000); Sekunden ++; OnTimerElapsed(); ' Dies wäre ein richtiger Refactor? (Ich werde es testen, aber ich kann jetzt nicht) – AR89
- 1. Xamarin SQLite PCL-Implementierung
- 2. GetConstructors in Xamarin PCL-Bibliothek
- 3. Xamarin Shared Library und PCL
- 4. Verwenden Mono.Android in meiner PCL Xamarin Forms
- 5. HttpClient fehlt .Net portable Teilmenge beim Erstellen von PCL in Xamarin
- 6. Xamarin PCL verbrauchen SOAP-Web-Service
- 7. Xamarin - PCL-Projekt zu SAP hinzufügen?
- 8. Verbindungsfehler beim Aufruf einer REST-API in Xamarin PCL
- 9. __library_projects__ fehlt in Cross-Plattform Xamarin
- 10. Mixing PCL-Bibliotheken und nicht-PCL-Code
- 11. Programm hängt, wenn REST API von Xamarin PCL Aufruf
- 12. Xamarin PCL C# - Deserialize Zeichenfolge zu einem JSONObject/JSONArray
- 13. Wie zielen Sie eine Xamarin PCL-Anwendung für mehrere Kunden?
- 14. Xamarin Forms PCL wie PushAsync Von iOS customRenderer
- 15. Wie lese ich eine Textdatei im Xamarin Forms PCL-Projekt?
- 16. Visual Studio kann keine Profile151-PCL zu Xamarin-Projekt hinzufügen
- 17. Einrichtung von Xamarin Studio für die Arbeit mit PCL & MVVMCross
- 18. Benutzerdefinierte Ausnahmen in PCL-Dateien
- 19. Xamarin .NET 4.5 fehlt (Windows 8)
- 20. Wie konsumiert WCF-Dienst in Xamarin.forms PCL?
- 21. Acr.UserDialogs PCL-Fehler
- 22. Warum System.Timer die Klassenmitgliedsvariable nicht ändert?
- 23. MethodDecorator.Fody in Xamarin.Forms PCL funktioniert nicht
- 24. Datei fehlt Fehler beim Versuch, App in Xamarin zu erstellen
- 25. Kann nicht App.cs in Xamarin PCL-Projekt in Visual Studio 2015
- 26. SHA1 Keyed Hash mit HMAC in Xamarin Forms PCL [C# entspricht Hash_Hmac in PHP]
- 27. App.AppName in Xamarin Formen
- 28. Definieren Sie Xmlns in Xamarin Forms
- 29. ist sqlite.net-pcl kostenlos für sqlchiper
- 30. So erstellen Sie eine PCL mit SQLite-Unterstützung in einer xamarin Cross-Plattform-Anwendung
Diese ‚Verhalten‘ Streichhölzer und folgt dem, was in 4.5.1 tragbaren tatsächlich zur Verfügung steht. Ich glaube, es ist jetzt in 4.5.2, aber das hilft dir jetzt nicht auf Xamarin/iOS-Andriod. Siehe für Details: http://stackoverflow.com/questions/12555049/timer-in-portable-library – SushiHangover
Auch diskutiert und beantwortet von Xamarin in ihren Foren: http://forums.xamarin.com/discussion/17227/timer -in-portable-class-library – SushiHangover