ウィンドウのビューモデルを作成し、それをウィンドウにバインドする起動ダイアログボタンがあります(UI仮想化が有効になっています)。最初のクリックでダイアログを起動するのに 1 秒しかかかりません。しかし、同じダイアログを非常に頻繁に開いたり、続けて開いたりすると、次の繰り返しのためにグリッド データ ソースを設定するのにより多くの時間がかかり始めます。一時停止してから再度ウィンドウを開くと、約 1 ~ 2 秒しかかかりません。
for first time populating the item source it take only 1 second:
next time populating the item source it takes 2 second
next time populating the item source it takes 3 second
next time populating the item source it takes 6 second
next time populating the item source it takes 8 second
ただし、推奨されていない GC.Collect() を呼び出すと、グリッド データ ソースの入力には常に約 1 秒かかります。しかし、の呼び出し
Gc.Collect()
Gc.WaitForPendingFinalizer()
Gc.Collect()
繰り返しごとに時間がかかりました。
電話GC.Collectが良い選択肢ではないことはわかっています。アプリケーションのパフォーマンスを向上させる方法を誰か提案できますか?
私のマシンは非常に優れた構成になっているのに対し、ユーザーのマシンはそれほど高速ではない可能性があるため、ユーザーのマシンについてもっと心配しています。