델파이 5에서 인디 9를 사용합니다. 제 애플리케이션에서 UDP를 통해 네트워크 장치와 통신하고 싶습니다. 그래서 저는 UDPServer comp를 사용합니다. TThread에서 파생 된 클래스입니다. 다음 코드와 비슷하게 작성할 때 CPU 사용량은 100 %입니다. 스레드에서델파이에서 100 % CPU 사용량
:
while not terminated do begin
if GetMessage(Msg, 0, 0, 0) then begin
if Msg.message = WM_UDPMSG then
Break
else
DispatchMessage(Msg);
end;
end;
및 OnUDPRead 이벤트 : 나는 동안-DO 루프 또는 OnUDPRead 이벤트 절전 모드 기능을 사용하면
try
// Processing the data here
except
PostThreadMessage(ThreadId, WM_UDPMSG, 0, 0);
end;
는 변화가 없다. 여전히 CPU 사용량은 100 %입니다.
내 스레드 우선 순위가 보통입니다.
문제를 어떻게 해결할 수 있습니까?
GetMessage가 이미 차단되어 있으므로 세마포가 필요하지 않습니다. –
@ TheFox : 당신의 권리, 나는 그것에 대해 완전히 잊었다! (내가 창 메시지 시스템에 직접 프로그래밍 한 이후로 한참 동안). 내 대답에서 그 부분을 추출했습니다. –
감사합니다 The_Fox 및 Davy Landman – SimaWB