2011-05-06 6 views
0

소켓에서 데이터를 읽고 데이터베이스를 업데이트하는 ActiveX exe를 작성했습니다. 클라이언트에서 여러 스레드 (현재 5로 테스트 중)를 만들면 Activex exe가 100 % CPU 사용량을 사용하고 있습니다. 가끔 모든 스레드가 시작되지만 아무 것도 완료되지 않습니다. ActiveX exe에서 이벤트를 사용하고 있습니다.ActiveX 스레드 HIGH CPU 사용량

액티브 X EXE는 두 가지 작업

의 ActiveX EXE의 크기는 55킬로바이트에 관한
a.Read from socket 
b.update database. 

있습니다.

어디서 잘못 되었나요?

좋습니다.

+0

.exe를 디버깅 및/또는 프로파일 링하여 시간을 어디에서 보내고 있는지 확인 했습니까? 난 거기에 귀하의 코드 어딘가에 끊임없이 데이터가 소켓에서 사용할 수 있는지 여부를 점검 - 너무 높은 CPU 사용량으로 이어질 것이 단단한 루프가 은행에 줄. –

+0

@ Will, VB6에서 사용할 수있는 프로파일 링 도구가 있습니까? – ramu

+0

나는 VB6를 거의 정직하게 다루지 않았기 때문에 확실하지 않습니다. 그런 도구가있을 것으로 기대합니다. ' 디버거에서 앱을 실행하고 수시로 침입한다면 CPU 시간의 대부분이 어디로 가고 있는지에 대해 좋은 느낌을 받아야합니다. –

답변

0

후 확인 (하지만/do-while 루프/용) 당신은 루프 내에서 가을 위에 게시 코드의 두 줄이 있는지

DoEvents 

프로그램이 마우스 클릭 (같은 이벤트를 처리 할 수 ​​있도록 포함하는 경우, 키보드, 양식 크기 재조정 및 최소화 등)를 수행하는 동안 다른 코드를 처리하는 것이 좋습니다.

a.Read from socket 
DoEvents 
b.update database