画像データベースとスライドショーの2つのWindowsフォームプログラムがあります。Visual Studio 2010でメモリ不足の問題が発生するVisual Basic .Net 4.0
スライドショーを連続画像の各新しいスイッチと共に使用
メモリをインクリメントすることなく、表示ピクチャを更新します。しかし、私は
には、データベースに追加する画像のサムネイルを表示するための50個のピクチャボックスがあります。サイズ(57,40)の各ピクチャボックスが小さいサイズのサムネイル(< 12K)で更新されると、IDEによって使用されるメモリは、サムネイルのピクチャボックスがロードされる前に32ビットXPシステムで約1GBから660MB 。
サイズ(57,40)の約30枚のピクチャボックスが.jpgソースファイル> 3MBからロードされると、IDEメモリの使用量は約2.1GBに増加します。 (問題は.jpg画像では簡単に遭遇しません。< = 15K、すべてのサムネイルは< 1.3GB memを使用して使用できます)。
問題は、平均.jpgファイルサイズ> 3MBのHDキャノンカメラの画像で表示されます.jpg画像は表示されたサムネイルの30個のピクチャボックスにロードされ、表示された画像をクリックして起動し、 2.3GBのメモリ使用量を超えると、メモリ不足によるクラッシュが発生します。
これはVB2010または.NET 4.0のバグですか?
すべての画像がサムネイルとして表示されたら、すべてのサムネイルを含むパネル上の50個のピクチャボックスのいずれかをマウスでクリックすると、フォーム上に1つ大きな画像ボックスが更新され、 1024,768)。任意のサムネイルをクリックすると、1つの大きなピクチャボックスに関連するピクチャがファイルから表示されますが、同時にシステムメモリはクリックイベントあたり約240KB増加します。最終的に、2.3GBを超えるシステムメモリを使用すると、プログラムがメモリ不足エラーでクラッシュします。
にはどうすれば
それはちょうど別の絵で更新されたときと同じピクチャボックスが使用するメモリを回復するためのプログラムを得ることができますか?
以下の部分コード:
' Each Thumbnail has a click event
'PB49 is a PictureBox max size (57,40) used as a thumbnail display, all 50 are on a panel
Private Sub PB49_Click(sender As System.Object, e As System.EventArgs) Handles PB49.Click
'PB(50) is an Integer Array flagging Pictures to add
If PB(49) = 1 Then PB(49) = 0 Else PB(49) = 1
If PB(49) = 1 Then
CheckBox49.Checked = True 'Tiny Checkbox on thumbnail
F$ = ListAddFiles.Items(48) 'ListFileBox of FileNames
PBx1.Image = Image.FromFile(F$) 'Gets filename and path and loads image into PictureBox
PBx1.Visible = True 'Large PictureBox (1024,768)shows Pic F$ located on Form
Else
CheckBox49.Checked = False
PBx1.Image = Nothing
PBx1.Visible = False
End If
End Sub
私がインストールさXP PRO 32-Bit SP3 4GB RAM
にVisual Studio Ultimate SP1 updated .NET 4.0
を使用しています。
あなたが配置する必要があるオブジェクトを配置していますか? –
質問に '?'をあまり使わないでください。 – VMAtm
これは間違いなくあなたのバグではなく、VSです。 – VMAtm