C#中如何让timer控件隔一定时间后停止?

niunan 2010-01-09 01:11:34
我想用C#用一个摇奖机,网上的代码基本都是写在timer事件中,让标签内的文字随机跳动,然后点击停止按钮后就timer.stop(),
我现在想要这样子的一个效果,点击停止按钮后,数字还在跳动,1秒以后,第一个数字停止跳动,再1秒后,第二个数字停止跳动,。。。。
直到所有的数字停止跳动,我的作法是这样子的:

三个timer控件,每个控件控制一个标签:

#region 全局变量,用于产生随机数
Random r1 = new Random(1111);
Random r2 = new Random(2222);
Random r3 = new Random(3333);
#endregion

// 标签1的timer事件
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = r1.Next(1,34).ToString();
}

// 标签2的timer事件
private void timer2_Tick(object sender, EventArgs e)
{
label2.Text = r2.Next(1, 34).ToString();
}

// 标签3的timer事件
private void timer3_Tick(object sender, EventArgs e)
{
label3.Text = r3.Next(1, 34).ToString();
}

点击开始按钮后,触发三个timer控件
// 点击开始按钮,触发三个timer控件
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
timer2.Start();
timer3.Start();
}

点击停止按钮后,停止三个timer控件,因为要间隔一定时间停止,所以我这样子写代码:
// 点击停止按钮,停止三个timer控件
private void button2_Click(object sender, EventArgs e)
{
Thread.Sleep(1000);
timer1.Stop();
Thread.Sleep(1000);
timer2.Stop();
Thread.Sleep(1000);
timer3.Stop();
}

结果在测试的时候发现,开始按钮的时候跳动正常了,但是停止按钮后,三个数字同时都停止了下来了,不知道是怎么回事,请教高手!!!
...全文
1925 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhukui 2010-01-09
  • 打赏
  • 举报
回复
主线程阻塞在button2_Click中,将代码改成:


Thread thread = new Thread(new ThreadStart(delegate
{
Thread.Sleep(1000);
timer1.Stop();
Thread.Sleep(1000);
timer2.Stop();
Thread.Sleep(1000);
timer3.Stop();
}));
thread.Start();

cuike519 2010-01-09
  • 打赏
  • 举报
回复
你这3个timer的心跳时间是多少?1秒?
ProjectDD 2010-01-09
  • 打赏
  • 举报
回复
这样 设x=(2to3)

private void timerx_Tick(object sender, EventArgs e)
{
labelx.Text = rx.Next(1, 34).ToString();
if(!timer(x-1).Enable){
this.labelx.Text=rx.Next(1, 34).ToString();
Thread.Sleep(1000);
this.timerx.Stop();
}
}

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧