创建Windows应用程序后
用窗体的Load方法创建一个线程调用UpDown方法
但是方法只调用一次...。
我想是100毫秒调用一次的。private void frmTest_Load(object sender, EventArgs e)
{
Thread moveUpDown = new Thread(new ThreadStart(UpDown));
moveUpDown.Start();
} private bool upDown = true;
private void UpDown()
{
if (this.Top < lalShow.Top + lalShow.Height)
{
upDown = false;
}
if (lalShow.Top < 0)
{
upDown = true;
}
if (upDown)
{
lalShow.Top += 10;
Thread.Sleep(100);
}
else
{
lalShow.Top -= 10;
Thread.Sleep(100);
}
}
用窗体的Load方法创建一个线程调用UpDown方法
但是方法只调用一次...。
我想是100毫秒调用一次的。private void frmTest_Load(object sender, EventArgs e)
{
Thread moveUpDown = new Thread(new ThreadStart(UpDown));
moveUpDown.Start();
} private bool upDown = true;
private void UpDown()
{
if (this.Top < lalShow.Top + lalShow.Height)
{
upDown = false;
}
if (lalShow.Top < 0)
{
upDown = true;
}
if (upDown)
{
lalShow.Top += 10;
Thread.Sleep(100);
}
else
{
lalShow.Top -= 10;
Thread.Sleep(100);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
UpDown();
}
在timer_Tick事件里加入
Thread moveUpDown = new Thread(new ThreadStart(UpDown));
moveUpDown.Start();
在frmTest_Load里加入timer.Enable = true;
在load里添加代码如下:
Timer ok=new Timer(UpDown,null,0,100);//其他的都不用要了。
这个是使用线程池中的线程来执行的!
使你的程序更简单易懂和高效。
1、必须检测成员函数updown的共享冲突。
2、Timer ok必须是成员变量,否则,局部变量在load函数执行完毕后会自动释放,无法完成任务。
if (this.Top < lalShow.Top + lalShow.Height)
{
upDown = false;
}
if (lalShow.Top < 0)
{
upDown = true;
}
if (upDown)
{
lalShow.Top += 10;
Thread.Sleep(100);
}
else
{
lalShow.Top -= 10;
Thread.Sleep(100);
}
Thread.Sleep(100);
}
if (this.Top < lalShow.Top + lalShow.Height)
{
upDown = false;
}
if (lalShow.Top < 0)
{
upDown = true;
}
if (upDown)
{
lalShow.Top += 10;
Thread.Sleep(100);
}
else
{
lalShow.Top -= 10;
Thread.Sleep(100);
}
Thread.Sleep(100);
}