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

怎么让一个循环暂停后去处理某事件,处理完继续循环

2012-10-10 
如何让一个循环暂停后去处理某事件,处理完继续循环for 1 to 10 dobegin处理事件; //用webrowser打开网页,

如何让一个循环暂停后去处理某事件,处理完继续循环
 
for 1 to 10 do
begin
  处理事件; //用webrowser打开网页,打开完之后继续循环  
  继续循环;
end;
(打开网页需要一定的时间,现在的问题是没等打开完,就继续执行了,有什么方法可以让循环等打开完之后在继续执行)

[解决办法]
用WaitForSingleObject 应该可以解决,参考如下代码


等待一个指定句柄的进程什么时候结束}
function MyThreadFun(p: Pointer): DWORD; stdcall;
begin
if WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 then
Form1.Text := Format('进程 %d 已关闭', [hProcess]);
Result := 0;
end;

{启动一个进程, 并建立新线程等待它的结束}
procedure TForm1.Button1Click(Sender: TObject);
var
pInfo: TProcessInformation;
sInfo: TStartupInfo;
Path: array[0..MAX_PATH-1] of Char;
ThreadID: DWORD;
begin
{先获取记事本的路径}
GetSystemDirectory(Path, MAX_PATH);
StrCat(Path, '\notepad.exe');

{用 CreateProcess 打开记事本并获取其进程句柄, 然后建立线程监视}
FillChar(sInfo, SizeOf(sInfo), 0);
if CreateProcess(Path, nil, nil, nil, False, 0, nil, nil, sInfo, pInfo) then
begin
hProcess := pInfo.hProcess; {获取进程句柄}
Text := Format('进程 %d 已启动', [hProcess]); 
CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID); {建立线程监视}
end;
end;

热点排行