线程能否长期存在,就像主线程一样,由函数或事件触发开始,处理玩后再等待。。(50分)

  • 主题发起人 主题发起人 ahjie
  • 开始时间 开始时间
A

ahjie

Unregistered / Unconfirmed
GUEST, unregistred user!
TThread在处理玩一个过程后,就直接关闭了线程。如果用whiledo
的话,则占用cpu.
怎么办??
 
在 Whiledo
中加入想WaitForSingleObject()的等待语句.
 
qince:
我现在的麻烦是,我用dll,dll回调一个我的函数,而程序处理的是从这个函数开始的;
可以让线程里面这样么? 把函数写入线程,由这个函数触发操作,完后等待下一次触发;
 
其实可以将线程封装成一个类,在线程类中提供如下方法:
procedure TMyThrd.Execute;
begin
while not Terminateddo
....... // 你要完成的事
WaitForSingleObject(FMyEvent, INFINITE) // 等待FMyEvent激活
end;
end;
在Execute中写你要处理的事情,处理完了跟一句WaitForSingleObject(Handle, INFINITE)
下次在类中调用的时候只用SetEvent(Handle)就可以了;
 
关键我就是不希望再在通过主线程了,是不是没有办法的啊?:(
 
可是消息循环在主线程里呀,你必须通过消息循环呀!
 
While (1=1)do
begin
....
Sleep(1000);
//几乎不吃CPU
end
 
楼上的,sleep,那我就不能做到及时性了
 
to qince
哦,这样的啊,谢谢指教
 
多人接受答案了。
 
后退
顶部