2012-09-25 14 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

これまではDelphiでこれを見てきました。私の頭の上から私は詳細を思い出すことはできません。 –

+0

'sd_Child.cpp'は、私のマシンにインストールされている標準のC++ Builderの一部ではなく、' MDI'が 'Multiple Document Interface'を参照するのと同じように' SDI'は通常 'Single Document Interface'を指します。 MDIアプリケーションフレームワークの一部。何らかのサードパーティ製のパッケージを使用していますか? –

答えて

13

これは、アクションおよびアプリケーションアイドルハンドラで更新される方法に関連する既知の問題のようです。以下のQCレポートには、シナリオを説明: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/)を参照してください。 –

関連する問題