如何给线程发送消息(100分)

  • 主题发起人 主题发起人 hellenlong
  • 开始时间 开始时间
H

hellenlong

Unregistered / Unconfirmed
GUEST, unregistred user!
这样给SendNewsThread发消息
PostTHreadMessage(SendNewsThread.Handle,WM_SENDBUFFER,0,0);这儿报失败了????
但是,在线程中
inherited;
while not terminateddo
begin
GetMessage(AMsg,0,0,0);这儿始终接不到消息,为什么???????
case AMsg.message of
 
我喜欢用这个:
function AllocateHWnd(Method: TWndMethod): HWND;
分配一个句柄,用该句柄接收消息(别人通过该句柄向你发消息),
处理消息就在这个 TWndMethod 里面即可。
 
但是,这个和线程挂不上钩啊,线程还是接受不到数据
线程的handle又不可以等于AllocateHWnd
 
在线程中:
PeekMessage(AMsg, 0, WM_USER, WM_USER, PM_NOREMOVE);
// 加上这一句
while not terminateddo
begin
GetMessage(AMsg,0,0,0);这儿始终接不到消息,为什么???????
case AMsg.message of
 
PostTHreadMessage(SendNewsThread.theadid,WM_SENDBUFFER,0,0);这样就OK了
如何控制两个线程对同一个队列操作吗?
 
用临界区控制就可以了阿
 
同意楼上的观点,还可以用进程同步来解决
 
var
FCriticalSection: TCriticalSection;
begin
FCriticalSection:= TCriticalSection.create
FCriticalSection.Enter;
同一个队列操作...
FCriticalSection.Leave;
FCriticalSection.Free;
end;
 
多人接受答案了。
 
后退
顶部