|
分類:[.NET 全般]
お世話になります。あさくらと申します。
VB2005で、簡単な画像ビューワを作る上で、 フォルダ配下の画像を全て検出し、サムネイル画像を表示する、 という機能を作りこんでいるのですが、 フォルダに大量の画像ファイルが存在する場合、パフォーマンスが著しく劣化するようで、困っています。
ストップウォッチクラスを使用して、ボトルネックを探してみたところ、 どうやらImageListに画像をAddする部分が遅いということが分かりました。
Dim sw As New System.Diagnostics.Stopwatch() 'ストップウォッチを開始する sw.Start()
' イメージリストに登録されていないアイコンを取得 LargeImageList.Images.Add("ファイルパス", "サムネイルイメージ")
'ストップウォッチを止める sw.Stop()
'結果を表示する Debug.Print(sw.Elapsed.Milliseconds)
最初のうちは、Addにかかる時間は1ミリ秒前後なのですが、 扱うファイルが500を超えるあたりから劣化が体感できるようになり(約30ミリ秒) 1000になると無視できないほど遅くなります(約100ミリ秒)
タスクマネージャでメモリ使用量を見てみましたが、使用領域は増えていくものの、 常識的な範疇で、PC全体のパフォーマンスが劣化しているようには見えません。
このような現象をご存知の方はいらっしゃいますでしょうか? できれば、対処法を知りたいのですが、ネットを検索してもImageListの使用法しか見つからないので質問させていただきました。 よろしくお願いします。
|