窗口消息循环,线程消息循环,区别???
有如下情况:在主线程中创建一个子线程,主线程 通过 发送消息 来通知子线程,我见过有两种方式:
1、子线程中
主线程: 用 PostMessgae 通知子线程
2、子线程中:
主线程:用PostThreadMessage通知子线程
上面两种方式,那种比较好?比较合理,高效,健壮?或有更好的方式?
1、子线程中
procedure TThread.WndProc(var Message: TMessage);
begin
DefWindowProc(FWnd, Message.Msg, Message.WParam, Message.LParam);
end;
procedure TThread.Execute;
begin
{$IFDEF DELPHI_6_UP}
FWnd := Classes.AllocateHWnd(WndProc);
{$ELSE}
FWnd := AllocateHWnd(WndProc);
{$ENDIF}
try
while not Terminated do
begin
try
GetMessage(Msg, FWnd, 0, 0);
if //想要自己处理的消息
begin
//相关操作
end
else if not Terminated then
DispatchMessage(Msg);
except
end;
end;
finally
{$IFDEF DELPHI_6_UP}
Classes.DeallocateHWnd(FWnd);
{$ELSE}
DeallocateHWnd(FWnd);
{$ENDIF}
end;
end;主线程: 用 PostMessgae 通知子线程
2、子线程中:
procedure TThread.Execute;
begin
while not Terminated do
begin
try
GetMessage(Msg, 0, 0, 0);
//根据 不同情况 ,做不同事情
except
end;
end;
end;主线程:用PostThreadMessage通知子线程
上面两种方式,那种比较好?比较合理,高效,健壮?或有更好的方式?
...全文
相关推荐
窗口机制 消息循环 消息队列
自己总结的窗口机制,包括消息发送,消息循环的过程,以及GetWindowText的实现,翻阅了很多资料哦,欢迎大家下载^_^
Chromium:线程模型,消息循环
转载自Soul Apogee 本文链接地址:Chrome学习笔记(一):线程模型,消息循环 看Chrome已经有一段时间了,但是一直都没有沉淀些内容下来,是该写写笔记什么的了,免得自己忘记了。看的都是Windows平台下的代码,所以记录也都是记录的。。。废话。。 那么首先,先从最基础的东西记录起吧:Chrome的线程模型和消息循环。 多线程的麻烦 多线程编
自定义线程消息循环
建立线程自己的消息循环,接收发给本线程的用户自定义消息,涵盖了多线程通信的知识,也可以转化为线程池
线程间通信方式3:消息传递方式
线程间通信方式3:消息传递方式的演示。采用计算演示线程的执行,并采用用户界面线程来实时显示执行的进度,线程间的通信方式采用了3种方式相结合,对多线程间的通信有比较好的学习和研究价值。
MFC线程自定义消息循环
MFC线程自定义消息循环


Windows SDK/API
