2012-09-25 26 views
10

Estoy trabajando en la aplicación MDI escrita en C++ Builder 2010. Cuando la ventana secundaria está en estado maximizado, la aplicación consume el 100% del tiempo de CPU en modo inactivo.La aplicación MDI consume 100% de la CPU en inactivo

He usado el perfilador 'Very Sleepy' y muestra que la función Sd_childFinalize usa el 99% de los recursos de la CPU pero no puedo encontrarlo en mi código. sd_Child.cpp es la unidad C++ donde se define la clase MDI de formulario hijo. Solo encontré el símbolo @@[email protected] en el archivo ejecutable. Por favor, ayúdame a comprender cómo solucionar este problema.

+0

¿Por qué sigues usando MDI en 2012? Estuvo en desuso hace mucho, mucho tiempo. –

+0

Lo he visto antes en Delphi. Fuera de mi cabeza, no recuerdo ningún detalle. –

+0

'sd_Child.cpp' no es parte de la instalación estándar de C++ Builder en mi máquina, y al igual que' MDI' se refiere a 'Multiple Document Interface',' SDI' generalmente se refiere a 'Single Document Interface', que no sería parte de un marco de aplicación de MDI. ¿Estás usando un paquete de terceros de algún tipo? –

Respuesta

13

Parece ser un problema conocido relacionado con las acciones y la forma en que se actualizan en el controlador inactivo de la aplicación. El siguiente informe de control de calidad describe su escenario: http://qc.embarcadero.com/wc/qcmain.aspx?d=12706

la solución a su problema, de acuerdo con el informe de control de calidad, es para establecer la propiedad TApplication.ActionUpdateDelay a un valor mayor que 0.

lo que me gustaría saber es por qué la presencia de un formulario de cliente maximizado lleva al DoActionIdle del VCL a llamarse en un bucle ocupado. Presumiblemente, la ejecución del controlador OnUpdate de una acción genera otro mensaje en cola, y otro inactivo realiza ciclos, y así sucesivamente. Pensé que lidiar con eso sería la mejor manera de abordar este problema, pero tal vez sea difícil de lograr.

+0

Tenga en cuenta que [QualityCentral ahora se ha cerrado] (https://community.embarcadero.com/blogs/entry/quality-keeps-moving-forward), por lo que ya no puede acceder a los enlaces 'qc.embarcadero.com' . Si necesita acceder a datos antiguos de control de calidad, consulte [QCScraper] (http://www.uweraabe.de/Blog/2017/06/09/how-to-save-qualitycentral/). –

Cuestiones relacionadas