2012-09-25 15 views
10

Pracuję nad aplikacją MDI napisaną w C++ Builder 2010. Gdy okno potomne jest w stanie zmaksymalizowanym, aplikacja zużywa 100% czasu procesora w trybie bezczynności.Aplikacja MDI zużywa 100% procesora w trybie bezczynności

Użyłem profilera "Bardzo śpiący" i pokazuje, że funkcja Sd_childFinalize wykorzystuje 99% zasobów procesora, ale nie mogę go znaleźć w moim kodzie. sd_Child.cpp to jednostka C++, w której zdefiniowano klasę potomną MDI. Znalazłem tylko symbol @@[email protected] w pliku wykonywalnym. Pomóż mi zrozumieć, jak rozwiązać ten problem.

+0

Dlaczego nadal używasz MDI w 2012 roku? Był przestarzały, dawno, dawno temu. –

+0

Widziałem to już wcześniej w Delphi. Z góry głowy nie pamiętam żadnych szczegółów. –

+0

'sd_Child.cpp' nie jest częścią standardowej instalacji C++ Builder na moim komputerze i podobnie jak' MDI' odnosi się do 'interfejsu wielu dokumentów'' 'SDI' zwykle odnosi się do' interfejsu pojedynczego dokumentu', który nie byłby część struktury aplikacji MDI. Czy używasz jakiejś innej paczki? –

Odpowiedz

13

Wygląda na to, że jest to znany problem związany z akcjami i sposobem ich aktualizacji w programie obsługi bezczynności aplikacji. Poniższy raport QC opisuje swój scenariusz: http://qc.embarcadero.com/wc/qcmain.aspx?d=12706

Rozwiązaniem problemu, według raportu QC jest ustawić właściwość TApplication.ActionUpdateDelay na wartość większą niż 0.

Co chciałbym wiedzieć, dlaczego jest obecność zmaksymalizowanej formy klienta prowadzi do wywołania funkcji DoActionIdle w VCL w zajętej pętli. Przypuszczalnie wykonanie czynności obsługi OnUpdate prowadzi do kolejnej wiadomości oczekującej w kolejce i kolejnych cykli bezczynności i tak dalej. Pomyślałem, że radzenie sobie z tym byłoby najlepszym sposobem rozwiązania tego problemu, ale być może trudno to osiągnąć.

+0

Pamiętaj, że [QualityCentral został teraz zamknięty] (https://community.embarcadero.com/blogs/entry/quality-keeps-moving-forward), więc nie masz już dostępu do linków 'qc.embarcadero.com' . Jeśli potrzebujesz dostępu do starych danych QC, spójrz na [QCScraper] (http://www.uweraabe.de/Blog/2017/06/09/how-to-save-qualitycentral/). –

Powiązane problemy