控制过程使用一个线程,暂停、启动的按钮命令在一个线程,在运行过程中,通过命令控制某个变量,通知线程随时挂起等,或者将线程处于Sleep状态,无限循环暂停状态,等等
你可以用事件的方式: ManualResetEvent pauseEvent = new ManualResetEvent(false); pauseEvent.waitone(); 线程等待... pauseEvent.set(); 线程继续 轻松实现暂停功能
你不给button设置enable=false 怎么会不能点了呢? 定义一个secondsCount 变量,在timer的tick事件里面自增。暂停就timer.enable = false; 停止记得把secondsCount 清空
可以实现,但是你没发现一个按钮就可以解决了吗。当然分开也可以, 我做过一个抽奖,就是timer。
system.timer你是怎么用的和怎么设置的system.timer的单位是毫秒,1000毫秒=1秒
[quote=引用 17 楼 tinydyw 的回复:] 简单说下思路...比如我现在窗体上有个label执行倒数.. 1.首先既然是倒数,肯定是要用到timer去执行100-1的过程... 2.然后我不太清楚如果timer的enable改成false再改回true是从头重新开始,还是继续刚才的事件..那么你需要一个变量去保存你刚才按暂停的时候倒数到了哪里... 3.跟上面一样.由于不知道改成true后是从什么时候开始,因此timer执行的内容也建议包装成一个带int参数的方法,点击再开始的时候将上面记录的数字传进去,继续timer 4.这个如果涉及到多线程..直接用timer.Invoke去执行暂停和继续的方法就可以了.当然我现在没有写代码,并不清楚是否涉及到多线程,,就我个人感觉事件和委托就足够处理了. 5.暂停建议单独写个方法,在点击暂停按钮的事件里触发暂停事件,,然后暂停事件执行暂停方法.. 那么准备工作做好之后..逻辑上是这样: 1.点击开始,timer运行 2.任意时间点击暂停,记录当前的数字,并触发暂停事件 3.点击再开始按钮.将记录的数字传入再启动方法,timer再次启动 4.2-3循环 5.结束. 差不多就是这样= =...
简单说下思路...比如我现在窗体上有个label执行倒数.. 1.首先既然是倒数,肯定是要用到timer去执行100-1的过程... 2.然后我不太清楚如果timer的enable改成false再改回true是从头重新开始,还是继续刚才的事件..那么你需要一个变量去保存你刚才按暂停的时候倒数到了哪里... 3.跟上面一样.由于不知道改成true后是从什么时候开始,因此timer执行的内容也建议包装成一个带int参数的方法,点击再开始的时候将上面记录的数字传进去,继续timer 4.这个如果涉及到多线程..直接用timer.Invoke去执行暂停和继续的方法就可以了.当然我现在没有写代码,并不清楚是否涉及到多线程,,就我个人感觉事件和委托就足够处理了. 5.暂停建议单独写个方法,在点击暂停按钮的事件里触发暂停事件,,然后暂停事件执行暂停方法.. 那么准备工作做好之后..逻辑上是这样: 1.点击开始,timer运行 2.任意时间点击暂停,记录当前的数字,并触发暂停事件 3.点击再开始按钮.将记录的数字传入再启动方法,timer再次启动 4.2-3循环 5.结束. 差不多就是这样= =...
你这个设备到底是现实中的设备,还是仅仅是你窗体中的一个动画效果? 如果仅仅是个动画,你点暂停的时候记住计数,继续的时候从这个计数开始走不就得了? 如果是控制现实中的设备,就不是计数那么简单了.因为现实中的设备不会每一次运行周期都非常精确,尤其还存在故障的情况下. 现实中的设备必须要有输入状态,告诉程序现在的状况,程序根据设备状况来执行逻辑,如果出现错误就自动停止了 而不是设备都已经停止运转了,你程序还在计数.
111,094
社区成员
642,554
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧