|
-
Aug 24th, 2007, 08:49 AM
#1
Thread Starter
New Member
Memory allocation is not released
Hi,
I'm working with CF2.0 VB.NET 2005.
I have an application running on PPC.
The structure is as follows:
1. startup form (main) has a button to open an other form
2. form1 has a custom image button and normal button
3. form2 had a custom image button and normal buttion
for 2 and 3 the custombutton onclick switches between form1 and form2.
Always disposing the previous form.
So if I click on form1, he closes himself, raiseevent to the main form and from the main form I open form2. This is the same for form2.
On form1 and form2 I paint a background image on the form.
In my dispose of my forms I always dispose that image.
If I run the windows CE remote performance monitor and monitor the memory load I have the following.
Start app: memory load 38MB
open form1: Jumps to 44MB
open form2 from form1: go's to 45MB
switching between to's two doesn't change in memory. Always 44MB and 45MB with sometimes a peak to 47MB and back to 45MB.
Eventually closing the form1 or form2 and returning to the main form result's in the memory load staying at 44MB.
My two forms are disposed and still it doesn't return to the 38MB initial load of the main form.
Could somebody explain this to me or help me resolve this issue.
The Code:
Code:
' Main form
Public Class main
Public iCurrentForm As Integer = 1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As New Form1
iCurrentForm = 1
AddHandler frm.openNext, AddressOf openNext
frm.Show()
frm.BringToFront()
End Sub
Private Sub openNext()
If iCurrentForm = 1 Then
Dim frm As New Form2
iCurrentForm = 2
AddHandler frm.openNext, AddressOf openNext
frm.Show()
frm.BringToFront()
Else
Dim frm As New Form1
iCurrentForm = 1
AddHandler frm.openNext, AddressOf openNext
frm.Show()
frm.BringToFront()
End If
End Sub
End Class
' Form1
Imports D8D.PPC.iGuide.Resources.MyResources
' namespace has the images in them
Public Class Form1
Public Event openNext()
Private _background As Bitmap
Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
If Not _background Is Nothing Then
e.Graphics.DrawImage(_background, New Rectangle(0, 0, Me.Width, Me.Height), New Rectangle(0, 0, _background.Width, _background.Height), GraphicsUnit.Pixel)
Else
MyBase.OnPaintBackground(e)
End If
End Sub
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
_background = Images.LoadBitmap("bkgBiografie")
btnClose.ImageUp = Images.LoadBitmap("btnClose")
btnClose.ImageDown = Images.LoadBitmap("btnClose_down")
End Sub
Private Sub btnClose_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClose.Click
Me.Close()
RaiseEvent openNext()
Me.Dispose()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
MyBase.Finalize()
End Sub
End Class
'form1 designer
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Public Class Form1
Inherits System.Windows.Forms.Form
Implements IDisposable
Shadows disposed As Boolean = False
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If Not Me.Disposed Then
If disposing Then
If Not _background Is Nothing Then
_background.Dispose()
_background = Nothing
End If
End If
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
End If
Me.Disposed = True
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.btnClose = New D8D.PPC.Controls.UI.Buttons.ImageButton
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'btnClose
'
Me.btnClose.Location = New System.Drawing.Point(67, 61)
Me.btnClose.Name = "btnClose"
Me.btnClose.Size = New System.Drawing.Size(352, 64)
Me.btnClose.TabIndex = 0
Me.btnClose.Text = "ImageButton1"
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(165, 336)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(144, 40)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Button1"
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(192.0!, 192.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
Me.ClientSize = New System.Drawing.Size(480, 640)
Me.ControlBox = False
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.btnClose)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Location = New System.Drawing.Point(0, 0)
Me.MinimizeBox = False
Me.Name = "Form1"
Me.Text = "Form1"
Me.TopMost = True
Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
Me.ResumeLayout(False)
End Sub
Friend WithEvents btnClose As D8D.PPC.Controls.UI.Buttons.ImageButton
Friend WithEvents Button1 As System.Windows.Forms.Button
End Class
'form2 is the same as form1
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|