回 帖 发 新 帖 刷新版面

主题:线程问题

高手帮一下啊
我想做一个抽奖机
用了线程...
我还用了代表
还是做不出来
帮我看一下
public delegate void ThreadDelgate();//定一个代表
private Thread T1;//定一个线程
public void Show1()//定一个方法让Label1方法来显示
{
Random R = new Random();
                    while (true)
                    {
                        label1.Text = R.Next(0, 10).ToString();
                        Thread.Sleep(100);
                    }
}
public void Show2()//当Label1通过代表来完成
        {
            label1.BeginInvoke(TD, null);
            ThreadDelgate TD = new ThreadDelgate(Show1);
           
        }
当点了Click后开始   先不考试停不停的问题..
这样Label1的没有变..郁闷
        private void button1_Click(object sender, EventArgs e)
        {
            T1 = new Thread(new ThreadStart(Show2));
            T1.Start();
        }

回复列表 (共3个回复)

沙发

1.
label1.BeginInvoke(TD, null);
ThreadDelgate TD = new ThreadDelgate(Show1);
反了

2.
while (true)
{
label1.Text = R.Next(0, 10).ToString();
Thread.Sleep(100);  // 在show2里面控制间隔,UI线程卡住了,自然不能及时响应
}

板凳

label1.BeginInvoke(TD, null);
ThreadDelgate TD = new ThreadDelgate(Show1);
我换回来了

Thread.Sleep(100); 这个也去掉了...
可是还是不行啊..还有

3 楼

不是说要去掉Sleep,而是换个线程位置
直接去掉效果一样,都是频繁更换内容导致UI无法响应

我来回复

您尚未登录,请登录后再回复。点此登录或注册