簡體   English   中英

如何在下一個計時器滴答之前倒計時並顯示時間?

[英]How to count down and display time before next timer tick?

我正在嘗試使用一個計時器,該計時器每5秒或根據用戶指定的時間間隔執行一次操作。

現在,我想擁有一個功能,該功能將在10毫秒的間隔內倒計時,直到第一次計時器計時。 我玩耍了,找到了一種簡單的方法,可以通過對第一次計時器的1/10間隔計數進行計數,但是在計數時並不代表任何東西。

這樣倒數怎么辦?

這是我目前的情況,但是我想更改它:

    private void tmrClickInterval_Tick(object sender, EventArgs e)
    {
        if (nudPlusMinus.Value == 0) tmrClickInterval.Interval = int.Parse(nudClickInterval.Value.ToString());
        else tmrClickInterval.Interval = random.Next(int.Parse(nudClickInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudClickInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString()));

        if (tmrClickInterval.Interval / 10 == 0) tmrNextClick.Interval = 1;
        else tmrNextClick.Interval = tmrClickInterval.Interval / 10;
        tmrNextClick.Start();
        content++;
        nextClick = tmrClickInterval.Interval;
        label1.Text = content.ToString();
    }

    private void tmrNextClick_Tick(object sender, EventArgs e)
    {
        if (nextClick <= 0) tmrNextClick.Stop();
        else
        {
            nextClick = nextClick - (tmrClickInterval.Interval / 10);
            lblNextClickCount.Text = (nextClick / 100).ToString();
        }
    }

首先,我不確定您要做什么,也不確定以10毫秒為間隔,您正在推動計時器的最低分辨率。 看到這個問題 話雖如此,您可以嘗試使用Diagnostics.Stopwatch類來計時Tick事件之間的時間間隔。 像這樣:

private void tmrClickInterval_Tick(object sender, EventArgs e)
    {
        stopWatch.Stop();
        stopWatch.Reset();         
        stopWatch.Start();
        tmrNextClick.Start();
        content++;
        label1.Text = content.ToString();
    }

    private void tmrNextClick_Tick(object sender, EventArgs e)
    {
        nextClick = (((tmrClickInterval.Interval) - stopWatch.ElapsedMilliseconds) / 10) * 10;
        if (!(nextClick < 0))
        {
            lblNextClickCount.Text = nextClick.ToString();
        }
    } 

似乎您正在嘗試計算兩個時間間隔,即長間隔和短間隔,而長間隔是短間隔的倍數。

如果效率不是最重要的(不太可能如此),那么我想我將只有一個計時器來對較短的間隔進行計時。 您知道多少個“短滴答聲”等於一個“長滴答聲”,所以只需記下已有多少個短滴答聲,當您有足夠的時間時,觸發“長滴答聲事件”即可。

使用兩個計時器,您可以獲得各種比賽條件。 您的“短勾”可能會在“長勾”之前觸發,或者反之亦然。 這兩個計時器可能彼此之間有抖動(盡管它們在平均水平上大約是正確的),所以在任何給定時間都不會先觸發哪個計時器。 使用單個計時器,您可以控制所有這些因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM