Buduję aplikację Xamarin na różne platformy na systemy IOS Android i Windows Phone 8.1, korzystając z .Net 4.5.1. Kiedy próbuję odwołać się do System.Timers w projekcie PCL, go tam nie ma. Jak to naprawić?System.Timer brakuje w Xamarin PCL
Odpowiedz
Można użyć: Device.StartTimer
Składnia:
public static void StartTimer (TimeSpan interval, Func<bool> callback)
Przykłady: numer przyrost co 1 sekund do 1 minuty
int number = 0;
Device.StartTimer(TimeSpan.FromSeconds(1),() => {
number++;
if(number <= 60)
{
return true; //continue
}
return false ; //not continue
});
Przykłady: odczekać 5 sekund, aby uruchomić funkcję jednorazowo
Device.StartTimer(TimeSpan.FromSeconds(5),() => {
DoSomething();
return false ; //not continue
});
** Device.StartTimer ** jest tylko częścią ** Xamarin.Forms ** i nie jest kompatybilny z ** przenośną biblioteką klasy Xamarin Native Development ** lub ** Shared library ** –
Zauważyłem to pewnego dnia. Mimo że klasa znajduje się w dokumentacji interfejsu API System.Threading.Timer Class ..Annoying.
Zresztą tworzę własne klasy Timer, używając 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;
}
}
'poczekaj na Task.Delay (1000);'. Dlaczego 1000, a nie WaitTime? – AR89
@ AR89 Dobre miejsce, może być refaktoryzowane, aby użyć 'WaitTime'. W tej chwili cyklicznie zaokrągla każdy "sekundę" (Task.Delay (1000)), a następnie co każde "sekundy" porównuje jego wartość z 'WaitTime', aby zobaczyć czy musi wystrzelić' TimerElapsed' zdarzenie – user1
'czeka na Task.Delay (1000); sekund ++; OnTimerElapsed(); ' To byłby właściwy reaktor? (Testuję to, ale nie mogę teraz) – AR89
- 1. GetConstructors w bibliotece PCL Xamarin
- 2. Implementacja Xamarin SQLite PCL
- 3. Xamarin thrift pcl Implementation
- 4. Wspólna biblioteka Xamarin i PCL
- 5. Xamarin sider.dll brakuje
- 6. Xamarin Forms PCL HttpClient rzuca nieobsługiwany wyjątek na Androida
- 7. Jak odczytać plik tekstowy w projekcie PCL Xamarin Forms?
- 8. konfiguracja studia xamarin do pracy z PCL i MVVMCross
- 9. Używanie NUnit z PCL
- 10. Jak utworzyć PCL z obsługą sqlite w aplikacji Xamarin Cross Platform
- 11. Autogenerowane pliki XAML.g.cs nie są kompilowane w projekcie PCL Xamarin Forms
- 12. Jak korzystać z usługi WCF w Xamarin.forms PCL?
- 13. Odwołanie do PCL (Portable Class Library) z projektu Xamarin Mono na Androida
- 14. Usuwanie błędów Xamarin nie działa prawidłowo
- 15. Xamarin Forms InitializeComponent nie istnieje
- 16. Xamarin Forms błąd: java.lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompat
- 17. Odbicie PCL uzyskać właściwości z BindingFlags
- 18. Formy Xamarin: StackLayout z zaokrąglonymi narożnikami
- 19. Używanie Microsoft.bcl.async w PCL z Mono Droid?
- 20. Jak wydrukować plik pcl w języku C#?
- 21. Tworzenie PCL, który celuje w Monodroid
- 22. Czy można używać rozszerzenia .AsParallel w PCL?
- 23. Uzyskaj kontekst Androida w projekcie PCL
- 24. OnBackPressed w Xamarin Androida
- 25. C# PCL odczyt z pliku
- 26. NSUserDefaults - Xamarin
- 27. Jak osiągnąć `FSharpValue.GetUnionFields` w C# PCL (Profil 259)
- 28. Czy mogę kierować reklamy na systemy iOS i Android tylko na PCL Xamarin i mieć więcej funkcji .NET?
- 29. Schemat rejestrowania na Xamarin iOS
- 30. Prosty UIPickerView w MonoTouch (Xamarin)?
Dopasowuje „zachowania” i następuje to, co jest aktualnie dostępne w 4.5.1 przenośnego. Wierzę, że jest teraz w wersji 4.5.2, ale to nie pomaga teraz w Xamarin/iOS-Andriod. Zobacz szczegóły: http://stackoverflow.com/questions/12555049/timer-in-portable-library – SushiHangover
Również omówione i odpowiedział przez Xamarin na ich forach: http://forums.xamarin.com/discussion/17227/timer -w przenośnej bibliotece-klasy – SushiHangover