首页 新闻 会员 周边

求告诉解决下线程问题!动态的

0
悬赏园豆:30 [待解决问题]

要求:1、动态生成不同的按钮,数量不限。假设有五个。
      2、每一个按钮都有自己的时间范围,类如:第一个可能需要5秒后改变按钮的背景色,第二个可能6秒后,第三个可能是3秒后。
      3、第一个按钮变色后,再第二个变色,以此类推。。。
      4、当到第五个变完色再从第一个开始

代码实现效果:

Thread t1;
            Thread t2;
            Thread t3;
           private void button4_Click(object sender, EventArgs e)
        {
            t1 = new Thread(t1_start);
            t1.IsBackground = true;
            t2 = new Thread(new ThreadStart(t2_start));
            t2.IsBackground = true;
            t3 = new Thread(new ThreadStart(t3_start));
            t3.IsBackground = true;
            t1.Start();
            t2.Start();
            t3.Start();
        }
        public void t1_start()
        {
            Thread.Sleep(3000);
            button1.BackColor=Color.Red;
        }
        private void t2_start()
        {
            t1.Join();
            Thread.Sleep(6000);
            button2.BackColor = Color.Red;
           
        }
        private void t3_start()
        {
            t2.Join();
            Thread.Sleep(2000);
            button3.BackColor = Color.Red;
           
        }

只是初期不确定有多少个按钮,同时如果到了最大按钮数再置所有按钮颜色为默认色,接着再变色,中间还能控制暂停。

tala1986的主页 tala1986 | 初学一级 | 园豆:172
提问于:2013-04-05 10:48
< >
分享
所有回答(3)
0

1、生成的按钮保存到一个集合中

2、使用一个线程去改变按钮颜色就好了,时间可以考虑用Random去生成

3、在非主线程中改变按钮颜色要注意这样去写

    if (this.InvokeRequired)
    {
        this.Invoke(new Action<String>(ChangeText), "InvokeRequired = true.改变控件Text值");
        //this.textBox1.Invoke(new Action<int>(InvokeCount), (int)mainThreadId);
    }
    else
    {
        ChangeText("在创建控件的线程上,改变控件Text值");
    }
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-04-05 12:38
0

按照你的描述,事件都是连续的而不是并行的,为什么要用多线程呢?

I,Robot | 园豆:9783 (大侠五级) | 2013-04-05 14:44

建议使用timer,简单易用

支持(0) 反对(0) 迅捷网络[来送福利] | 园豆:578 (小虾三级) | 2013-04-05 22:09

能给点您的意见吗?详细点的!我小白,才开始弄,不太懂啊!

支持(0) 反对(0) tala1986 | 园豆:172 (初学一级) | 2013-04-05 22:39

@tala1986: 简单的说,你可以把颜色、按钮、延迟的时间分别放在3个数组中,声明一个变量来记录当前改变颜色的按钮的索引,开一个线程来改变按钮的颜色,改变后索引加1,Sleep延迟数组中指定的时间后再改变下一个按钮的颜色就可以了。

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2013-04-06 02:51
0

兄弟,你怎么滥用多线程呢?

你要明白多线程也是分时间片的。

迅捷网络[来送福利] | 园豆:578 (小虾三级) | 2013-04-05 22:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册