Napravio sam jednu applikaciju koja mi nenormalno trosi memoriju...U cemu je problem?
Na jednoj formi imam TableLayoutPanel. U taj panel zavisno od broja upisa u bazi(recimo Imena uposlenika) pri startu forme, mi se dinamicki kreiraju Buttons.
Za svaki taj Button sam napravio Handler, znaci koliko god ima dugmadi, dodaje se i Buttonhandler.
Klikom na to dugme, u drugom TableLayoutPanel-u, se takodjer dinamicki generisu buttons, recimo organizacione jedinice svakog uposlenika. Znaci svaki uposlenik moze imati vise organizacionih jedinica, i zavisno od njihovog broja, za svaku jedinicu se genrise novi button.
Problem nastaje u sledecem: Kada u prvom Panelu klikam na Uposlenike(skacem sa jednog na drugi), svaki put mi se u drugom panelu mijenja content tj generisu mi se buttons. Medjutim svaki taj click na Uposlenika uzrokuje da applikacija trosi memoriju, tako da Memory Usage za tu app stalno raste.
Ako zatvorim tu formu, nista se ne desi, a ja bih ocekivao da se ta memorija smanji(isprazni) nakon sto sam zatvorio formu.
Pokusavao sam razne dispose, ali nista ne pomaze. Evo dole dio koda koji se izvrsava nakon sto kliknem na user-a, pa ako moze neko da mi pomogne kako da rijesim taj problem.
Znaci, kada se pozove na izvrsavanje ovaj donji code, svaki put memmory Usage poraste. Dispose sam ovdje(u ovom code) namjerno izostavio jer ionako ne radi.
App je radjena u Vb.Net 2005,
Za buttons koristim KryptonToolkit dll, znaci third Part control, ljepse izgledaju. Da li to moze biti uzrok???
Private Sub btnArrayClick(ByVal sender As System.Object, ByVal e As EventArgs)
TableLayoutPanel2.Controls.Clear()
Dim myConnection As SqlConnection = New SqlConnection(PopCodexAB00FAD5BB(Host1, Host2))
Dim myCommand As SqlCommand = New SqlCommand("Jedinice", myConnection)
Dim i As Integer = 0
Dim da As SqlDataAdapter = New SqlDataAdapter
Dim ds As New DataSet
Dim url As String = "C:\Program Files\Orga\Orga\slike\"
myCommand.CommandType = CommandType.StoredProcedure
myCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.Int)).Value = sender.tag
da.SelectCommand = myCommand
da.Fill(ds, "Jedinice")
Dim btn(ds.Tables("Jedinice").Rows.Count) As KryptonButton
For Each row As DataRow In ds.Tables("Jedinice").Rows
i = i + 1
btn(i) = New KryptonButton
btn(i).Text = row(1).ToString
btn(i).StateCommon.Content.ShortText.TextH = PaletteRelativeAlign.Far
btn(i).ForeColor = Color.White
btn(i).Tag = row(0)
btn(i).Name = "Button" + i.ToString()
btn(i).Size = New Size(178, 68)
btn(i).StateCommon.Content.ShortText.Font = New Font("Ariel", 9, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
btn(i).Values.Image = Image.FromFile(url + row(4))
btn(i).StateCommon.Content.Image.ImageH = PaletteRelativeAlign.Near
btn(i).PaletteMode = PaletteMode.SparkleBlue
btn(i).ButtonStyle = ButtonStyle.Standalone
TableLayoutPanel3.Controls.Add(btn(i))
TableLayoutPanel3.AutoSize = True
AddHandler btn(i).Click, AddressOf Me.btnArray1Click
Next
End Sub