首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 线程有关问题

2012-01-09 
c# 线程问题我刚学c#不久.我用c#做一个类似劲乐团,又像打字软件的小程序.我在timer控件的事件里,每一秒创

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太浪费了,玩上几个小时.我想..那结果是什么哦. 
应该用数组做. 或用泛型做..
接下来的.自己想吧.

热点排行