Sal*_*dor 13 delphi multithreading waitforsingleobject
实际上我使用这个代码并且工作正常,但我想知道是否是正确的方法.
while WaitForSingleObject(MyThread.Handle, 0) = WAIT_TIMEOUT do
Application.ProcessMessages;
ShowMessage('i am done');
Run Code Online (Sandbox Code Playgroud)
Rem*_*eau 13
VCL TThread类有自己的WaitFor()方法,在主线程上下文中调用时在内部泵送主消息队列:
MyThread.WaitFor;
ShowMessage('i am done');
Run Code Online (Sandbox Code Playgroud)
Application.ProcessMessages通常认为呼叫是代码气味.如果没有任何关系,让你的主线程闲置.
如果你经营一家公司,并且需要你的一个工人去商店买一些急需的用品,那么你会在门口走一步直到他回来,或者你更愿意坐在你的办公室休息等待他,并发现供应品在这里,因为你听到他走过门?无论哪种方式,他都会花费相同的时间,但第一种方式就是把你的腿伸出去.
同样,让线程报告回UI,而不是让您的UI观察线程.一种方法是让线程用于PostMessage将自定义消息发送到完成后启动它的表单,并在表单上放置一个消息处理程序来响应它.
| 归档时间: |
|
| 查看次数: |
9437 次 |
| 最近记录: |