System.Timer Xamarin 中缺少 PCL
System.Timer missing from Xamarin PCL
我正在使用 .Net 4.5.1 构建面向 IOS Android 和 Windows Phone 8.1 的 Xamarin 跨平台应用程序。当我尝试在 PCL 项目中引用 System.Timers 时,它不存在。我该如何解决这个问题?
您可以使用: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
});
前几天我注意到了这一点。尽管 class 在 API 文档中 System.Threading.Timer Class..烦人。
无论如何我创建了自己的计时器 class,使用 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;
}
}
我正在使用 .Net 4.5.1 构建面向 IOS Android 和 Windows Phone 8.1 的 Xamarin 跨平台应用程序。当我尝试在 PCL 项目中引用 System.Timers 时,它不存在。我该如何解决这个问题?
您可以使用: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
});
前几天我注意到了这一点。尽管 class 在 API 文档中 System.Threading.Timer Class..烦人。
无论如何我创建了自己的计时器 class,使用 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;
}
}