有多少种方法可以暂停,中止循环?如何实现?(50分)

  • 主题发起人 主题发起人 MingWord
  • 开始时间 开始时间
通过设置变量实现
var
StopLoop:boolean;

.....
while ..do
begin
if StopLoop then
Break;
end;
...
 
break
exit
abort
goto 建议不用
 
那么暂停呢?
 
exit 退出过程,但不会影响 finally部分的执行。
break 用于退出循环,while,repeat,for等,也不影响finally部分的执行
 
sleep:整个程序处于停止状态
用计时器可以模仿暂停,需要暂停时启动计时器,继续时终止计时器,在计时器的ontimer事件中处理暂停期间的事件。
 
sleep,用时间来控制要停多久,
时间到了自然就执行

或用一个变量去判断,如果是变量
在计时器的ontimer事件中再去判断上面的变量,
 
如果你在进程中用循环的话,只能终止,无法暂停,不过有个办法,就是不停的continue来模拟循环暂停,但是这样会很占用CPU资源的,例子如下:
while ..do
begin
if NeedResume then
Continue;
//下面再写你的处理代码]
end;
这样只要NeedResume等于真,就会在循环里面死循环下去,但是不执行任何代码.这只能当作一个权宜之计,而且我也不建议你用这样的设计.

我给你的建议就是使用线程,线程在执行过程中可以随时暂停,随时恢复,暂停的时候CPU是不会分配时间给线程的,所以这是最好的办法.

http://www.2ccc.com/article.asp?articleid=3740
这里有一个例子,在线程中搜索文件,其中就有功能能让搜索暂停和恢复,这个你可以借鉴.有关这个例子的详细讲解,在这里:
一个用 Observer 模式实现的 Thread 线程文件搜索例子(上): http://blog.sina.com.cn/u/5591c079010005pq
一个用 Observer 模式实现的 Thread 线程文件搜索例子(下): http://blog.sina.com.cn/u/5591c079010005pr
 
有暂停吗?Sleep(),呵
 
Sleep有什么好的,
GetTickCount比它强多了
 
sleep和gettickcount完全是两个不同的东西。。。。。
 
后退
顶部