如何在一个线程中调用主线程处理界面事情,而线程自己继续运行?(200分)

  • 主题发起人 主题发起人 Jerry Jin
  • 开始时间 开始时间
J

Jerry Jin

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在一个线程中调用主线程处理界面事情,而线程自己继续运行?或者一个线程如何调用另一个线程处理某一事情?
我想在一个线程运行的过程中,显示一个界面,要显示这个界面需要许多参数,若这个界面用 Synchronize 的话,又很难接受参数,并且这个线程和主线程都会停止,以等待这个界面的处理,所以这个线程不能用 Synchronize。那能否让其调用主线程去处理这个界面,而这个线程继续执行自己的计算?
有谁知道象 Norton Antivirus 的 LiveUpdate 下载时那样运用线程的模式?
 
线程可以向界面PostMessage呀,我想这是最简单的方法了吧
 
但是我要创建表单啊!
我已有一个函数用来创建和处理那个界面,如何让主线程来运行这个函数呢?用 PostMessage 可以吗?
 
在主线程中: 定义一个自定义消息 在自定义消息 中调用你的函数,
在次线程中: 在符合条件用postmessage 来激发此消息.
 
线程:
const
CM_MYMSG = WM_USER + 100;
发消息:
PostMessage( Application.MainForm.Handle, CM_MYMSG, 0, 0);
主线程:
procedure MyMessage(var Msg : TMessage);
message CM_MYMSG;
procedure TMainForm.MyMessage(var Msg : TMessage);
begin
....
end;
 
To apw銆亂sai銆乬olden_future銆亀ab:
鎴戣瘯杩囧彲琛岋紝璋㈣阿鍚勪綅锛? 浣嗘垜鎯冲彲鑳借繕鏈夋洿鐏垫椿鐨勬柟娉曘
 
To apw、ysai、golden_future、wab:
不好意思,我输入的字变成了乱码!
我试过可行,谢谢各位!
不过,我也遇到一些问题,有时发送消息后象死机一样,不知为什么?
 
后退
顶部