1

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

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

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

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

问题是第一个标签没有写出“准备好...”,但它会在打印出“准备好...”之前休眠 3-10 秒。我想要的是程序打印出“准备好......”然后进入睡眠状态 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;
    }
4

3 回答 3

9

您必须使用 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.Sleep 与该值一起使用。

于 2013-03-09T11:30:28.653 回答
8

采用

Random random = new Random();
mseconds=random.Next(3, 10) * 1000;   
System.Threading.Thread.Sleep(mseconds);
于 2013-03-09T11:29:29.457 回答
0

文本没有改变的原因是因为您将 gui 线程置于睡眠模式。您可以在更改标签文本后调用 Application.DoEvents 方法来解决此问题,但最好在单独的线程中进行计数。

于 2014-07-01T08:19:38.973 回答