关于线程的问题

yunmenggyy 2013-11-21 06:40:12

int temp=0;
private void button2_Click_1(object sender, EventArgs e)
{
timer2.Enabled = true;
Hanoi(disksNum, ZhuZiA, ZhuZiB, ZhuZiC);
timer2.Enabled = false;
}
private void timer2_Tick(object sender, EventArgs e)
{
temp++;
label7.Text = temp+" ";
}


各位大虾,我在界面里做了一个timer定时器,当我开始移动汉诺塔(button2点击)时,我让timer生效,然后汉诺塔移动完成之后,我让它停止,因为我设置的timer时间间隔是1000ms,所以我可以求出它移动所消耗的时间,我知道这个时间可以直接用两次时间之差相减,但我要的是动态的那个过程,但是为什么在我的vs2008里面,不但没有这个过程,最终显示的temp值还是0,hannio函数里面有盘子(pannel表示)的移动,还有一个延时的Thread.Sleep(500),我想问是不是这个的原因,该怎么修改呢?
...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunmenggyy 2013-11-21
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
[quote=引用 2 楼 yunmenggyy 的回复:] [quote=引用 1 楼 caozhy 的回复:] 在循环内加上Application.DoEvents();
?请问您指的是??[/quote] 写在sleep上一行。[/quote] 恩,这次结果是出来了,但是他仍然不是动态显示的,是不是因为WM_Timer消息和WM_Paint 的优先级的问题???
threenewbee 2013-11-21
  • 打赏
  • 举报
回复
引用 2 楼 yunmenggyy 的回复:
[quote=引用 1 楼 caozhy 的回复:] 在循环内加上Application.DoEvents();
?请问您指的是??[/quote] 写在sleep上一行。
yunmenggyy 2013-11-21
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
在循环内加上Application.DoEvents();
?请问您指的是??
threenewbee 2013-11-21
  • 打赏
  • 举报
回复
在循环内加上Application.DoEvents();

110,567

社区成员

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

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

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