[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje

[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje

ID:41037385

大小:76.00 KB

页数:3页

时间:2019-08-14

[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje_第1页
[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje_第2页
[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje_第3页
资源描述:

《[Delphi]多线程编程(9)认识等待函数 WaitForSingleObje》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一下子跳到等待函数WaitForSingleObject,是因为下面的Mutex、Semaphore、Event、WaitableTimer等同步手段都要使用这个函数;不过等待函数可不止WaitForSingleObject它一个,但它最简单.functionWaitForSingleObject(hHandle:THandle;{要等待的对象句柄}dwMilliseconds:DWORD{等待的时间,单位是毫秒}):DWORD;stdcall;{返回值如下:}WAIT_OBJECT_0{等着了,本例中是:等的那个进程终于

2、结束了}WAIT_TIMEOUT{等过了点(你指定的时间),也没等着}WAIT_ABANDONED{好不容易等着了,但人家还是不让咱执行;这一般是互斥对象}//WaitForSingleObject的第二个参数一般给常数值INFINITE,表示一直等下去,死等.WaitForSingleObject等待什么?在多线程里就是等待另一个线程的结束,快来执行自己的代码;不过它可以等待的对象可不止线程;这里先来一个等待另一个进程结束的例子,运行效果图:代码文件:unitUnit1;interfaceusesWindows,Mess

3、ages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1Click(Sender:TObject);end;varForm1:TForm1;implementation{$R*.dfm}varhProcess:THandle;{进程句柄}{等待一个指定句柄的进程什么时候结束}functionMyThreadFun(p:Point

4、er):DWORD;stdcall;beginifWaitForSingleObject(hProcess,INFINITE)=WAIT_OBJECT_0thenForm1.Text:=Format('进程%d已关闭',[hProcess]);Result:=0;end;{启动一个进程,并建立新线程等待它的结束}procedureTForm1.Button1Click(Sender:TObject);varpInfo:TProcessInformation;sInfo:TStartupInfo;Path:array[0..

5、MAX_PATH-1]ofChar;ThreadID:DWORD;begin{先获取记事本的路径}GetSystemDirectory(Path,MAX_PATH);StrCat(Path,'otepad.exe');{用CreateProcess打开记事本并获取其进程句柄,然后建立线程监视}FillChar(sInfo,SizeOf(sInfo),0);ifCreateProcess(Path,nil,nil,nil,False,0,nil,nil,sInfo,pInfo)thenbeginhProcess:=pIn

6、fo.hProcess;{获取进程句柄}Text:=Format('进程%d已启动',[hProcess]);CreateThread(nil,0,@MyThreadFun,nil,0,ThreadID);{建立线程监视}end;end;end.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。