Я создаю приложение для перекрестной платформы Xamarin, ориентированное на IOS Android и Windows Phone 8.1 с использованием .Net 4.5.1. Когда я пытаюсь ссылаться на System.Timers в проекте PCL, его там нет. Как это исправить?System.Timer отсутствует в Xamarin PCL
ответ
Вы можете использовать: Device.StartTimer
Синтаксис:
public static void StartTimer (TimeSpan interval, Func<bool> callback)
Примеры: Увеличение количества раз в 1 сек в течение 1 минуты
int number = 0;
Device.StartTimer(TimeSpan.FromSeconds(1),() => {
number++;
if(number <= 60)
{
return true; //continue
}
return false ; //not continue
});
Примеры: подождите 5 секунд, чтобы запустить функцию один раз
Device.StartTimer(TimeSpan.FromSeconds(5),() => {
DoSomething();
return false ; //not continue
});
** Device.StartTimer ** является частью ** Xamarin.Forms ** и несовместим с ** Портативной библиотекой классов Xamarin Native Development ** или ** Общая библиотека ** –
Я заметил это на днях. Несмотря на то, что класс находится в документации API System.Threading.Timer Class ..Annoying.
Во всяком случае, я создал свой собственный класс Timer, используя 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;
}
}
'ждут Task.Delay (1000);'. Почему 1000, а не WaitTime? – AR89
@ AR89 Хорошее место, он может быть реорганизован для использования 'WaitTime'. В настоящий момент он циклически округляет каждую 'second'' (Task.Delay (1000))', тогда каждая 'секунда' сравнивает свое значение с' WaitTime', чтобы увидеть, нужно ли ему запускать событие «TimerElapsed» – user1
'await Task.Delay (1000); секунды ++; OnTimerElapsed(); ' Это будет правильный рефактор? (Я проверю это, но я не могу сейчас) – AR89
- 1. Type.GetProperties() отсутствует в Xamarin PCL
- 2. Xamarin SQLite PCL-реализация
- 3. app.config Xamarin pcl
- 4. Xamarin PCL Embedded Resource
- 5. Xamarin thrift pcl Внедрение
- 6. Чтение файла в PCL, Xamarin
- 7. Неподдерживаемый профиль PCL в Xamarin
- 8. Подмножество функций в Xamarin PCL
- 9. PCL: отсутствует свойство
- 10. Использование HttpClient в Xamarin PCL для публикации
- 11. Xamarin создает приложение Xamarin Form PCL
- 12. Xamarin родные приложения + PCL: Доля изображений в проекте PCL
- 13. Платформа препроцессора PCL для Xamarin
- 14. Использование HttpClient для Xamarin PCL
- 15. Xamarin PCL vs. SL confusion
- 16. Общая библиотека Xamarin и PCL
- 17. Проблемы библиотеки Xamarin Sqlite-pcl
- 18. реализация rda.SocketsForPCL Xamarin forms PCL
- 19. Комплекты прокладки Xamarin и PCL
- 20. Расшифровка в проекте PCL в приложении xamarin
- 21. Отсутствующие ссылки в PCL в Xamarin Studio
- 22. Тип.GetMember & MemberInfo.GetCustomAttributes отсутствует (C# PCL .NET 4.6)
- 23. System.Collections.Specialized.HybridDictionary отсутствует в Xamarin
- 24. Как сжать видео из PCL в Xamarin
- 25. Невозможно установить SQLite-Net-pcl в Xamarin
- 26. Использование Mono.Android в моем PCL Xamarin Forms
- 27. Добавить системный пакет в проект Xamarin PCL
- 28. Шифрование в кросс-платформе xamarin PCL
- 29. Получить информацию о нити в Xamarin PCL
- 30. Xamarin - добавить проект PCL в SAP?
Это соответствует «поведение» и следует, что на самом деле имеется в 4.5.1 переносным. Я считаю, что это сейчас в 4.5.2, но это не поможет вам теперь на Xamarin/iOS-Andriod. См. Подробности: http://stackoverflow.com/questions/12555049/timer-in-portable-library – SushiHangover
Также обсуждался и ответил Xamarin на их форумах: http://forums.xamarin.com/discussion/17227/timer -in-portable-class-library – SushiHangover