在使用循环时如何在应用程序中暂停和恢复
我可以在我的循环的开始时暂停一些睡眠(xxx),但我希望在我需要时暂停并在需要时恢复
有任何想法吗 ?
提前致谢
好的,这里有更多的解释
for i:=0 to 100 do
begin
if button1.clicked then pause //stop the operation and wait for resume button
if button2.clicked then resume //resume the operations
end;
Run Code Online (Sandbox Code Playgroud)
编辑2:
好的家伙我会告诉一个例子很好地采取任何检查器假设代理检查器,我有一堆代理加载在我的tlistviwe我正在检查所有,通过使用lop for i:=0 to listview.items.count do......
我希望在我需要的时候暂停我的检查操作,并在需要时恢复
我清楚还是我还要解释一些?:S
问候
你需要一个布尔标志来指示继续循环是否安全.如果某些事情发生,那么你需要暂停,它应该将变量设置为false.这意味着,除非您使用多个线程,否则无论如何设置此标志都必须在循环内部进行检查.然后在循环的顶部(或底部),检查此变量是否为真,否则暂停.
在您的解释中,这是基本的想法:
procedure TForm1.DoLoop;
begin
FCanContinue := true;
for i:=0 to 100 do
begin
//do whatever
Application.ProcessMessages; //allow the UI to respond to button clicks
if not FCanContinue then Pause;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FCanContinue := false;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
FCanContinue := true;
Resume;
end;
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的实现.如果你有一个长时间运行的任务,你需要能够暂停和恢复命令,你真正应该做的是将它放在一个单独的线程中,看看TEvent该类中的SyncObjs.
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |