随机睡眠之间的一组时间

本文关键字:一组 时间 之间 随机 | 更新日期: 2023-09-27 18:03:00

我想创建一个程序,当用户点击开始按钮时,程序将休眠3秒到10秒,然后出现一个按钮,允许用户点击该按钮,然后时间将打印出来,并告诉用户用户点击按钮需要多长时间,以毫秒为单位。

我知道我需要使用Thread.Sleep()Environment.TickCount()

问题是我不知道如何使程序在3-10秒之间随机睡眠

谢谢你的回答。一切正常,但是出了一个小问题

问题是第一个标签没有写出"Get ready…",但它在打印出"Get ready…"之前睡了3-10秒。我想要的是程序打印出"Get ready…",然后去睡觉3-10秒。

代码如下:

    //Starts the count
    private void btnStart_Click(object sender, EventArgs e)
    {
        label1.Text = "Get ready...";
        //Generate random sleeptime
        Random waitTime = new Random();
        seconds = waitTime.Next(3 * 1000, 11 * 1000);
        //Put the thread to sleep
        System.Threading.Thread.Sleep(seconds);
        //Show the button
        btnNow.Show();
        label2.Text = "NOW!";
        //Count the time in milliseconds
        start = Environment.TickCount;
    }

随机睡眠之间的一组时间

您必须使用Random类:

Random rnd = new Random();
int number = rnd.Next(3,11);

看一下参考文献:http://msdn.microsoft.com/en-US/library/2dx6wyd4.aspx

注意第一个整型形参是包含型,而第二个形参是排他型。所以必须用11,而不是10。(如果你想排除10秒,你必须将其更改为"10")。

您可以将这个数字乘以1000来获得毫秒值并使用Thread。

使用

Random random = new Random();
mseconds=random.Next(3, 10) * 1000;   
System.Threading.Thread.Sleep(mseconds);

文本没有改变的原因是因为您正在将gui线程置于睡眠模式。您可以通过调用应用程序来修复这个问题。DoEvents方法,但最好在单独的线程中进行计数。