我在线程中使用了
while GetMessage(MsgRec, 0, 0, 0) do
begin
TranslateMessage(MsgRec);
DispatchMessage(MsgRec);
if abool=true then Break;
end;
接受值方式。但是当他接收到一定的程度后整个线程就处于休眠期了.. 我想问的是.当线程处于休眠的情况下。有什么办法判断他是不是正在休眠状态.又该如何唤醒...
while GetMessage(MsgRec, 0, 0, 0) do
begin
TranslateMessage(MsgRec);
DispatchMessage(MsgRec);
if abool=true then Break;
end;
接受值方式。但是当他接收到一定的程度后整个线程就处于休眠期了.. 我想问的是.当线程处于休眠的情况下。有什么办法判断他是不是正在休眠状态.又该如何唤醒...
case WaitForSingleObject(线程句柄,1) of
WAIT_OBJECT_0:ShowMessage('线程存在 且正在运行');
WAIT_TIMEOUT:ShowMessage('线程存在 且暂时没有运行');
WAIT_FAILED :ShowMessage('无效Handle ');
end;
WAIT_TIMEOUT状态,你试试,看看能否判断线程是否休眠
到底这一个句柄在线程的获取方式是什么。(我用的是delphi线程类)
var
TbeadID: THandle;
begin
TbeadID:=ThreadId; //一定要发送线程ID,要不然肯定不行
我在定时器加上这一句时。。就一直提示无效Handle
case WaitForSingleObject(TbeadID,1) of
WAIT_OBJECT_0:ShowMessage('线程存在 且正在运行');
WAIT_TIMEOUT:ShowMessage('线程存在 且暂时没有运行');
WAIT_FAILED :ShowMessage('无效Handle ');
end;
while PeekMessage(MsgRec, 0, 0, 0, 0) do
begin
GetMessage(MsgRec, 0, 0, 0);
TranslateMessage(MsgRec);
DispatchMessage(MsgRec);
Sleep(1000);
if abool=true then Break;
end;就是本来只发送一次的包。而现在他却要发送二个包。同时建立二个链接。。原因在哪里呀?(以上方法解决了我一开始的问题)