繁体   English   中英

在一组时间之间随机睡眠

[英]random sleep between a set of time

我想创建一个程序,当用户单击“开始”按钮时,该程序将在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;
    }

您必须使用Random类:

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

看看参考: http : //msdn.microsoft.com/zh-CN/library/2dx6wyd4.aspx

请注意,第一个整数参数是包含的,而第二个参数是排除的。 因此,您必须使用11而不是10。(如果要排除10秒,则必须将其更改为“ 10”)。

您可以将此数字乘以1000以获取毫秒值,然后将Thread.Sleep与该值一起使用。

采用

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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