繁体   English   中英

Xaml C#,UWP秒表延迟

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM