2012-09-25 3 views
10

C++ Builder 2010으로 작성된 MDI 응용 프로그램에서 작업하고 있습니다. 자식 창이 최대화 상태 일 때 응용 프로그램은 유휴 모드에서 CPU 시간을 100 % 소모합니다.MDI 응용 프로그램이 유휴 상태에서 100 % CPU를 사용합니다.

'Very Sleepy'프로파일 러를 사용했으며 기능이 Sd_childFinalize이고 CPU 리소스가 99 %이지만 코드에서 찾을 수 없습니다. sd_Child.cpp는 MDI 자식 폼 클래스가 정의 된 C++ 단위입니다. 나는 오직 실행 파일에 @@[email protected] 심볼을 발견했다. 이 문제를 디버깅하는 방법을 이해하도록 도와주세요.

+0

2012 년에도 MDI를 사용하는 이유는 무엇입니까? 오래 전에 오래 사용되지 않았습니다. –

+0

이전에 델파이에서 본 적이 있습니다. 내 머리 꼭대기에서 나는 어떤 세부 사항도 기억하지 못한다. –

+0

'sd_Child.cpp'는 내 컴퓨터에 설치된 표준 C++ Builder의 일부가 아니며 'MDI'가 '다중 문서 인터페이스'를 참조하는 것과 마찬가지로 'SDI'는 일반적으로 '단일 문서 인터페이스'를 말합니다. MDI 응용 프로그램 프레임 워크의 일부 어떤 종류의 제 3 자 패키지를 사용하고 있습니까? –

답변

13

이것은 작업 및 응용 프로그램 유휴 처리기에서 업데이트되는 방식과 관련된 알려진 문제인 것으로 보입니다. 다음 QC 보고서는 시나리오를 설명 : 품질 관리 보고서에 따르면, 내가 알고 사랑하는 것이 무엇 0보다 큰

이 왜 값으로 TApplication.ActionUpdateDelay 속성을 설정하는 것입니다

문제에 대한 해결책, http://qc.embarcadero.com/wc/qcmain.aspx?d=12706 최대화 된 클라이언트 형식이 존재하면 VCL의 DoActionIdle이 통화 중 루프에서 호출됩니다. 액션의 OnUpdate 핸들러를 실행하면 대기중인 다른 메시지와 다른 유휴 사이클 등이 발생할 수 있습니다. 나는이 문제를 다루는 가장 좋은 방법이 될 것이라고 생각했지만 달성하기는 어렵습니다.

+0

[QualityCentral이 종료되었습니다] (https://community.embarcadero.com/blogs/entry/quality-keeps-moving-forward), 더 이상 qc.embarcadero.com 링크에 액세스 할 수 없습니다 . 이전 QC 데이터에 액세스해야하는 경우 [QCScraper] (http://www.uweraabe.de/Blog/2017/06/09/how-to-save-qualitycentral/)를 확인하십시오. –

관련 문제