我有这个代码:
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 并向控制台写入一条消息。但是当我在 Debug模式下运行时,它永远不会到达那里,更让我困惑的是秒表耗时上升到 60,然后重置。有谁知道为什么会发生这种情况?
最佳答案
TimeSpan
结构的Seconds
属性获取时间间隔的秒数部分。类型是一个 int
并且这个值的范围是从 -59 到 59。如果你有一个 59 秒的 TimeSpan
并且你添加了一秒然后 Seconds
属性将变为 0
,.Minutes
属性将变为 1
。
如果您想要用 TimeSpan
表示的总秒数,那么您需要 TotalSeconds
(这是一个 double
,因为它也表示已经过去的小数秒。
关于c# - 计时器内的秒表在 C# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500039/