dephi线程中postmessage报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dephi线程中postmessage报错相关的知识,希望对你有一定的参考价值。
参考技术A 其中MyId是要返回的字符串在主窗口中使用如下代码: 先在public中加入消息函数的声明Delphi代码procedureWMTestEnd(var AMsg:TMessage);message WM_TEST_END;//消息函数 其中WM_TEST_END是自定义的消息 再在implementation写函数Delphi代码procedureTForm1.WMTestEnd(var AMsg:TMessage);vars:string;begin s:=string(Pointer(AMsg.wParam)^); Memo1.Lines.Add(s);end; 需要注意的是,如果你在线程中,一定要使用SendMessage来发送消息,如果使用PostMessage会出错。原因我想是因为 PostMessage发送消息后线程会继续执行下去,当主窗口收到这个消息并处理时,线程可能已经结束了,这时指向字符串的那个指针就会出错;而 SendMessage发送消息后会将线程挂起,直到消息处理完成后,才继续执行下面代码。
以上是关于dephi线程中postmessage报错的主要内容,如果未能解决你的问题,请参考以下文章
PostMessage 是不是可以在 GetMessage 之后使工作线程中的变量更改在 UI 线程中可见?