毎秒10以上のアイテムをトレネルリストに追加するアプリケーションがあります。これにより、コントロールとUIが反応しなくなり、十分にペイントできなくなることもあり、多くのCPUを消費します。コントロールペイントスパムの回避(treeview、listviewコントロールの更新中)
これらの新しい項目は異なるスレッドから来ているので、私はローカルキャッシュの何らかの並べ替えをしない限り.BeginUpdate()
を使用できません。
BeginUpdate()とEndUpdateを一定の間隔で実行すると、間隔の間に塗装されていない/空白が残っていることを制御できます。
この問題に対する最良の解決策は何ですか?理論的にはコントロールが自分のキャッシングを持っているので、キャッシングは私にとっては馬鹿だと思うので、コントロールを更新しないようにする方法があるはずですが、
私はdoeventsではないinvokeを使用しています。 –
はい、問題の理解は、アプリケーションが応答しないということでした。私の推測では、問題は負荷ではなくメッセージを処理する能力であるということです。 DoEventsを追加すると、呼び出しを使用するかどうかにかかわらず、アプリケーションが応答性が高くなる可能性があります。 奇妙に思えるのは、わずか10秒間は応答のないアプリなので、CPU負荷ではなく処理時間だと思っています。 – Tollo