[英]Xaml C#, UWP Stopwatch delay
我正在尝试为Windows 10通用应用制作秒表功能。 使用DispatcherTimer,我已经可以使用秒表,因为秒数最多为60,触发分钟加1,然后重置为零。 秒数将继续增加,但重置为零时会有1秒的延迟。 基本上,当达到60时,秒将重置为0,在下一秒保持为0,然后在下一秒上升为1。 任何想法可能是什么原因造成的? 非常感谢!
public sealed partial class MainPage : Page
{
DispatcherTimer secondstimer = new DispatcherTimer();
int secondscount = 0;
int minutescount = 0;
int hourscount = 0;
public MainPage()
{
this.InitializeComponent();
secondstimer.Interval = new TimeSpan(0, 0, 1);
secondstimer.Tick += Secondstimer_Tick;
SecondsTextBlock.Text = "00";
MinutesTextBlock.Text = "00";
HoursTextBlock.Text = "00";
}
private void Secondstimer_Tick(object sender, object e)
{
SecondsTextBlock.Text = secondscount++.ToString();
if (secondscount == 61)
{
minutescount++;
secondscount = 0;
MinutesTextBlock.Text = minutescount.ToString();
SecondsTextBlock.Text = secondscount.ToString();
}
if (minutescount == 61)
{
hourscount++;
minutescount = 0;
MinutesTextBlock.Text = minutescount.ToString();
HoursTextBlock.Text = hourscount.ToString();
}
}
}
您也可以使用StopWatch类。
https://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs.110%29.aspx
var stopWatch = new StopWatch();
stopWatch.Start();
这样会给您经过的时间
HoursTextBlock.Text = stopWatch.Elapsed.Hours.ToString();
MinutesTextBlock.Text = stopWatch.Elapsed.Minutes.ToString();
SecondsTextBlock.Text = stopWatch.Elapsed.Seconds.ToString();
您可以消除复杂性,而只需不断地计算秒数,然后像这样设置TextBlocks:
HoursTextBlock.Text = (secondscount / 3600).ToString();
MinutesTextBlock.Text = (secondscount % 3600) / 60).ToString();
SecondsTextBlock.Text = (secondscount % 60).ToString();
或类似的东西。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.