问一个主子线程通讯方面的问题(20分)

  • 主题发起人 主题发起人 tuiger
  • 开始时间 开始时间
T

tuiger

Unregistered / Unconfirmed
GUEST, unregistred user!
我试图用主线程(或主窗口程序)对信息进行分析后,分配给产生的子线程进行其他工作。
我有几点不太懂,1、子线程产生的结果,比如string,和boolean类型的,
如何让主线程知道?谢谢,最好能给我写几行代码。。。 :)
 
应该是用消息吧,我也不了解。
 
在子线程中定义几个全局变量存放结果,这样主线程可以访问到子线程的全局变量。
 
采用全局变量,这样就高定了!
 
thread:
constructor Create:
Event := CreateEvent(nil, True, False, nil);

execute
postMessage(Form1.Handle, WM_MyDefineMsg, 0, 0);
WaitForSingleObject(Event, INFINITE);
//一直等待Form1收到消息
//或直接用SendMessage
SendMessage(Form1.Handle, WM_MyDefineMsg, 0, 0);
Form1:
procedure TForm1.MyDefineMsg(var Msg: TMessage);
begin
//访问Thread的属性,如string, Integer,如不在同一个Unit,你将这些线程属性public/published,
SetEvent(Thread.Event);
//触发WaitForSingleObject,让它返回,不然那线程会死掉
msg.Result := 0;//控制消息返回值 = Thread.SendMessage返回值
end;
 
多人接受答案了。
 
后退
顶部