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这个线程不动,怎么办?
{
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这个线程不动,怎么办?
{
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 转了几圈以后,窗口图像就乱了呢,一片白色,里面的内容显示不出来,好像死掉似的,求教
{
pri1.Suspend();
}而且用按钮,暂时停线程运行,它停不下来