程序需要等待一段时间等一外部程序工作完成,我用 repeat application.processmessages 的方法,结果CPU占用率居高不下,如何解决

  • 主题发起人 主题发起人 wyxriver
  • 开始时间 开始时间
W

wyxriver

Unregistered / Unconfirmed
GUEST, unregistred user!
我的主程序在启动一外部程序后就开始监控外部程序的工作状态,直到外部程序工作结束,返回主程序继续工作,问题是主程序等候状态时,如何让主程序的CPU占用率低一些呢?我现用的代码如下所示: &nbsp;<br>&nbsp; repeat<br>&nbsp; &nbsp; &nbsp; application.ProcessMessages;<br>&nbsp; until not iswindowvisible(otherapplication.form1.handle);<br>非常感谢帮忙的朋友
 
参照进程同步的一些方法
 
好办 加上一 sleep(1) or waitmessage即可。
 
Function WinExecExW(cmd,workdir:pchar;visiable:integer):DWORD;<br>var<br>&nbsp; StartupInfo:TStartupInfo;<br>&nbsp; ProcessInfo:TProcessInformation;<br>begin<br>&nbsp; FillChar(StartupInfo, SizeOf(StartupInfo), #0);<br>&nbsp; StartupInfo.cb := SizeOf(StartupInfo);<br>&nbsp; StartupInfo.dwFlags := STARTF_USESHOWWINDOW;<br>&nbsp; StartupInfo.wShowWindow := Visiable;<br>&nbsp; if not CreateProcess(nil,cmd,nil,nil,false,Create_new_console or Normal_priority_class,nil,nil,StartupInfo,ProcessInfo) then<br>&nbsp; &nbsp; Result := 0<br>&nbsp; else<br>&nbsp; begin<br>&nbsp; &nbsp; WaitForSingleObject(processinfo.hProcess, INFINITE);<br>&nbsp; &nbsp; GetExitCodeProcess(ProcessInfo.hProcess, Result);<br>&nbsp; end;<br>end;
 
好办 加上一 sleep(1) or waitmessage即可。
 
你用 timer试一试
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
748
import
I
后退
顶部