注册 登录
编程论坛 ASP.NET技术论坛

System.Threading.Thread.Sleep()

bigzerg 发布于 2008-12-09 14:22, 4150 次点击
一个简单的程序,就是用AJAX Extensions中UpdatePenel控件中加入一个名为txtTime的Label来显示时间,利用Timer1的Tick事件来触发数据的跟新。我想请问一下,以下的程序中System.Threading.Thread.Sleep(100);这句对本程序起什么作用?因为我注释掉这句后,运行起来会不一样,我感觉好像对随机数有影响,是这样的么?请大虾帮忙解答,谢谢。
protected void Timer1_Tick(object sender, EventArgs e)
    {
        txtTime.Text = "服务器现在的时间是:" + DateTime.Now.ToLongTimeString();
        int red = new Random().Next(255);
        System.Threading.Thread.Sleep(100);//暂停100毫秒
        int green = new Random().Next(255);
        System.Threading.Thread.Sleep(100);
        int blue = new Random().Next(255);
        System.Threading.Thread.Sleep(100);
        int alph = new Random().Next(100);
        txtTime.BackColor = Color.FromArgb(alph, red, green, blue);
        txtTime.ForeColor = Color.FromArgb(green, blue, red);



        
    }
4 回复
#2
bygg2008-12-09 17:22
就是让你的程序睡0.1秒
#3
守望♂幸福2008-12-09 20:39
sleep(1000)=暂停1秒
#4
守望♂幸福2008-12-09 20:45
这个程序大体上是每隔0.1秒取一次颜色的随机值(总共取4次)所以你注释sleep掉后,不是对随机值有影响,而只是对显示的txtTime.BackColor和txtTime.ForeColor 有影响。
#5
青格儿2008-12-10 22:22
呵呵,一高手朋友说:从系统时钟派生出种子值,然而,系统时钟可能没有足够的分辨率,从而无法使用不同的种子值分别调用此构造函数。这种情况下,请应用一个算法来区分每个调用的种子值
我是这么理解的:
睡眠100ms就是让系统时钟有足够的分辨率,否则可能产生一样的随机数序列
也就是说是让它产生不一样的随机数序列

http://hi.baidu.com/dragonnet/blog/item/6626bfef29101510fdfa3c96.html 看看这个,好理解点。
1