我有此代码:
if (!App.stopWatch.IsRunning) { App.stopWatch.Start(); }
Device.StartTimer(new TimeSpan(0, 0, 1), () =>
{
if (App.stopWatch.IsRunning && App.stopWatch.Elapsed.Seconds >= 60)
{
Console.WriteLine("Reducing Points");
App.stopWatch.Restart();
}
return true;
});
我希望每60秒就会进入if并将消息写入控制台。但是,当我在“调试”模式下运行时,它永远不会到达那里,而令我更加困惑的是,秒表经过的时间上升到60,然后重置。有谁知道为什么会这样?
答案 0 :(得分:5)
Seconds
结构的TimeSpan
属性获取时间间隔的秒部分。类型是int
,其值的范围是-59到59。如果TimeSpan
为59秒,并且对其添加了1秒钟,则Seconds
属性将变成0
,而.Minutes
属性变成1
。
如果您希望用TimeSpan
表示的总秒数,则需要TotalSeconds
(这是double
,因为它也表示已过去的小数秒数。