掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リソース開放? (ID:141543)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB2008で、GetPixelでカーソル位置の色を取得してPictureBoxに色を表示する簡単なプログラムを作成しました。 今までリソースだのメモリなどあまり気にせず書いてたのですが、リソースが溜まってるせいか タスクマネージャのメモリ使用量が上がり続けてる事に気になり始めました。 しかも今回のGetPixelではエラーまで発生してしまったので質問させて頂きます。 Imports System.Runtime.InteropServices Public Class Form1 <DllImport("gdi32")> Private Shared Function GetPixel(ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer End Function <DllImport("user32")> Private Shared Function GetDC(ByVal hwnd As Integer) As Integer End Function Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'GetPixelで色を取得 Dim GetColor As Color = Color.FromArgb(GetPixel(GetDC(0), Cursor.Position.X, Cursor.Position.Y)) 'PictureBox1に取得した色を表示 PictureBox1.BackColor = Color.FromArgb(&HFF, GetColor.B, GetColor.G, GetColor.R) '左クリックした時にTimer1無効 If Control.MouseButtons = MouseButtons.Left Then Timer1.Enabled = False End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = True 'Timer1有効 End Sub End Class 以上のコードでTimar1を走らせると、タスクマネージャのメモリ使用量が約30KB/sペースで上がり続け 最初メモリ使用量が22M程度だったのが放置してると29M程度になり、ここでエラーが発生します。 内容は、OutOfMemoryExceptionはハンドルされませんでした。メモリが不足してます。です。 リソースの開放には、Usingステートメントが便利そうなのですが、使い方が解りません。 PictureBoxに対してDisposeしてみたりもしましたが、効果が見られませんでした。 リソースを旨く開放しつつメモリ使用量が上がらないプログラムにするにはどうしたら良いでしょうか? どうぞ宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.