首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#移动过程的暂停如何实现

2013-11-25 
C#移动过程的暂停怎么实现?我用C#写的汉诺塔的图形界面,当我点击button1时开始移动汉诺塔,当我点击button2

C#移动过程的暂停怎么实现?
    我用C#写的汉诺塔的图形界面,当我点击button1时开始移动汉诺塔,当我点击button2时会暂停程序,再当我点击button3时会继续执行汉诺塔函数,当然,可以直接在点击button1时开始,再次点击时暂停,再次点击时继续,但现在的关键是怎么实现暂停呢?暂停之后又怎么继续呢?我原来是这么想的,循环向消息队列发送WM_SIZE或者WM_PAINT消息直到要求继续移动,因为我注意到当我移动窗口的时候,移动的过程会暂停,但是又有一个问题,我发送之后不但暂停了,而且窗口死掉了,不知道大侠们有什么建议啊!!!!
[解决办法]
“移动”是一个定时执行过程,例如 Interval 等于 50毫秒的定时器驱动。在每一帧处理时间,你都调用一个

GoNextStep();
方法,仅此而已。

顺着这个架构来开始设计你的程序,改变你的数据结构。例如,所谓的汉诺塔“计算”部分是在一个线程中执行的,它只不过是将待显示的状态压入一个堆栈,而并不显示。

你在多线程编程中遇到的 Control.BeginInvoke(....) 也是如此。

热点排行