public void ChinaHappyBirthday()//中文label
        {
            if (InvokeRequired)
            {
                Invoke(new MethodInvoker(ChinaHappyBirthday));
            }
            else
            {
                while(true)
                {                       
                    if (label1.Left > this.Width)
                    {
                        label1.Left = 0;
                    }
                    label1.Left += Rand();
                    label1.Refresh();
                    Thread.Sleep(10);
                }
            }
        }
        public void EnglishHappyBirthday()//英文label
        {
            if (InvokeRequired)
            {
                Invoke(new MethodInvoker(EnglishHappyBirthday));
            }
            else
            {
                while(true)
                {                
                    if (label2.Left >=this.Width)
                    {                        
                        label2.Left = 0;
                    }
                    label2.Left += Rand();
                    label2.Refresh();
                    Thread.Sleep(10);
                }   
            }
        }
=========下面我用了两个线程,使上面的两个label能同时漂移
    private Thread pri1;
        private Thread pri2;
        private void button1_Click(object sender, EventArgs e)
        {
            pri1 = new Thread(new ThreadStart(ChinaHappyBirthday));
            pri2 = new Thread(new ThreadStart(EnglishHappyBirthday));
            pri3 = new Thread(new ThreadStart(txt));
            pri1.Start();
            pri2.Start();
        }此代码的目的是为了让label能横向的循环漂移,我定义了两个label,分别是中文的和英文的,我要用两个线程同时让它漂移起来,但是结果是只有pri1 这个线程不停的移动,pri2这个线程不动,怎么办?

解决方案 »

  1.   

    public void ChinaHappyBirthday()
            {
                if (InvokeRequired)
                {
                    Invoke(new MethodInvoker(ChinaHappyBirthday));
                }
                else
                {
                    while(true)
                    {                       
                        if (label1.Left > this.Width)
                        {
                            label1.Left = 0;
                        }
                        label1.Left += Rand();
                        label1.Refresh();
                        //
                        if (label2.Left >= this.Width)
                        {
                            label2.Left = 0;
                        }
                        label2.Left += Rand();
                        label2.Refresh();
                        //
                        if (label3.Top >= 600)
                        {
                            label3.Top = 0;
                        }
                        label3.Top += Rand();
                        label3.Refresh();
                        Thread.Sleep(10);
                    }
                }
            }
        private Thread pri1;
            private void button1_Click(object sender, EventArgs e)
            {
                pri1 = new Thread(new ThreadStart(ChinaHappyBirthday));
                pri1.Start();
            }
    =============
    用一个线程是实现了,可是为什么,label 转了几圈以后,窗口图像就乱了呢,一片白色,里面的内容显示不出来,好像死掉似的,求教
      

  2.   

    private void button2_Click(object sender, EventArgs e)
            {
                pri1.Suspend();
            }而且用按钮,暂时停线程运行,它停不下来