三亩园度假村:c#编程(多线程)问题(看情况加20-40分)

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 20:09:47
private void ThreadExample_Load(object sender, System.EventArgs e)
{timer1.Start();}请从以下说明
private void timer1_Tick(object sender, System.EventArgs e)
{
Label label = new Label();实例化时调用LABEL构造函数,能否简略包含哪些
label.Name = "Label" + _count.ToString(); 为何相加
label.Width = 12;
label.Height = 12;是否指框架的宽高度
label.ForeColor = System .Drawing.Color.White;
label.BackColor = this.BackColor;
this.Controls.Add(label);
System.Random random = new Random(DateTime.Now.Millisecond * DateTime.Now.Millisecond);
label.Left = random.Next(this.Width);
Letter letter = new Letter(label, this);
ThreadStart threadStart = new ThreadStart(letter.Run);
Thread thread = new Thread(threadStart);
thread.Start();
}
private void ThreadExample_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
foreach(Label label in this.Controls)
{
if(label == null)
break;
if(label.Text[0] == e.KeyChar)
{
label.Dispose();
this.Controls.Remove(label);
}}}}
public class Letter
{ private Label _label;
private Form _container;
private int _speed = 2;
public Letter(Label label, Form container)
{ _label = label;
_container = container;
Random random = new Random(DateTime.Now.Millisecond);
_speed = random.Next(5) + 1;
_label.Text = Convert.ToChar(65 + random.Next(57)).ToString();
switch(_speed)
{
case 1:
_label.ForeColor = System.Drawing.Color.Red;
break;
case 2:
_label.ForeColor = System.Drawing.Color.Yellow break;
case 3:
_label.ForeColor = System.Drawing.Color.Blue;
break;
case 4:
_label.ForeColor = System.Drawing.Color.Green;
break;
case 5:
_label.ForeColor = System.Drawing.Color.White;
break;
default:
_label.ForeColor = System.Drawing.Color.White;
break;
}}

public void Run()
{ try
{
while(_label.Top <= this._container.Height + 100)
{
if(_label == null)
{
Thread.CurrentThread.Abort();
}
_label.Top += 1;
Thread.Sleep(_speed * 5);
}
if(Thread.CurrentThread.IsAlive)
{ Thread.CurrentThread.Abort();
}}
catch(Exception ex)
{ Console.WriteLine("错误:" + ex.Message);
Console.WriteLine("错误:" + ex.StackTrace);
}
finally
{
if(!_label.Disposing)
{
_label.Dispose();
}
_container.Controls.Remove(_label);
}}}}此程序是实现简单的打英文字母程序,表面只有一个框架
控制台,循环,选择语句,异常能看明,处不是很明,还有其它关键处不明(本人刚学完C#基础,请高手指点;看情况再加20-40分;谢谢)

label.Name = "Label" + _count.ToString(); 为何相加
有多个label,当然名字要不一样

其他我不知道你的问题是什么

不懂