日期:2014-05-18  浏览次数:20880 次

c# 线程问题
我刚学c#不久.

我用c#做一个类似劲乐团,又像打字软件的小程序.

我在timer控件的事件里,每一秒创建一个线程.每个线程控制一个label往下落.

为什么好多好多,绝大多数的label落到一半,就不落了?而且感觉貌似很卡.请高手进来帮忙看看吧,我确实才入门不久,进这个论坛也不久,确实没什么分.跪求啦!!我的QQ:35313620,邮箱dukun00@163.com以后有什么能帮上忙的,我会尽量报答各位高手的.谢谢了.在线等.

程序源码如下:
C# code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace MyLittleGame
{
    public partial class Form1 : Form
    {
        //定义全局变量
        Label label;
        Thread myThread;
        //构造方法
        public Form1()
        {
            InitializeComponent();
        }

        //label下落方法
        public void _falling()
        {
            CheckForIllegalCrossThreadCalls = false;

            while (this.label.Top <= this.panel1.Height)
            {
                this.label.Top += 1;
                Thread.Sleep(5);
            }
            this.label.Dispose();
            myThread.Abort();
        }

        //每间隔一定时间发生
        private void timer1_Tick(object sender, EventArgs e)
        {
            label = new Label();
            label.Height = 10;
            label.Width = 50;
            label.Left = new Random().Next(9) * 50;
            switch(new Random().Next(3)+new Random().Next(2)+1){
            case 1:label.BackColor = Color.RoyalBlue;break;
            case 2:label.BackColor = Color.PowderBlue;break;
            case 3:label.BackColor = Color.BlueViolet;break;
            default: label.BackColor = Color.MediumVioletRed; break;
            }
            panel1.Controls.Add(label);
            myThread = new Thread(new ThreadStart(_falling));
            myThread.Start();
        }

        //start按钮事件
        private void startToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
    }
}



------解决方案--------------------
晕..我没看懂代码. 
 private void timer1_Tick(object sender, EventArgs e)
{
label = new Label();

但看上面这句.就不行每次都new Label太浪费了,玩上几个小时.我想..那结果是什么哦. 
应该用数组做. 或用泛型做..
接下来的.自己想吧.