N
NIGHT2000
Also ich will es mal so sagen, ich habe ein kleines Problem mit dem Arbeitsspeicher eines Programmes. Ich rufe sozusagen über die Label Funktion, ein Bild auf ein Label und wenn der Nutzer jetzt wieder eine Auswahl trifft, dann zeichne ich des wieder neu.
Damit ihr mich genau versteht hab ich hier mal extra was geprog. aber da scheint es zu gehen. Nur brauche ich des in meinen großen Prg. ^^ da geht es aber nett
Da wird aus dem 16 MB die es nutzt, 300 irgendwann und bleibt natürlich dann stehen ...
Hier mal der Code :
Jeder Tip könnt hilfreich sein und reicht mir schon
PS: Darf natürlich auch frei weiterverwendet werden...
Damit ihr mich genau versteht hab ich hier mal extra was geprog. aber da scheint es zu gehen. Nur brauche ich des in meinen großen Prg. ^^ da geht es aber nett
Da wird aus dem 16 MB die es nutzt, 300 irgendwann und bleibt natürlich dann stehen ...
Hier mal der Code :
Extra den Kompl. Code genommen schrieb:Code:Public Class Form1 Inherits System.Windows.Forms.Form #Region " Vom Windows Form Designer generierter Code " Public Sub New() MyBase.New() ' Dieser Aufruf ist für den Windows Form-Designer erforderlich. InitializeComponent() ' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen End Sub ' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' Für Windows Form-Designer erforderlich Private components As System.ComponentModel.IContainer 'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich 'Sie kann mit dem Windows Form-Designer modifiziert werden. 'Verwenden Sie nicht den Code-Editor zur Bearbeitung. Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Button2 As System.Windows.Forms.Button Friend WithEvents Button3 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button Me.Button2 = New System.Windows.Forms.Button Me.Button3 = New System.Windows.Forms.Button Me.SuspendLayout() ' 'Button1 ' Me.Button1.Location = New System.Drawing.Point(0, 8) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(96, 24) Me.Button1.TabIndex = 0 Me.Button1.Text = "laden" ' 'Button2 ' Me.Button2.Location = New System.Drawing.Point(96, 8) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(104, 23) Me.Button2.TabIndex = 1 Me.Button2.Text = "löschen" ' 'Button3 ' Me.Button3.Location = New System.Drawing.Point(843, 21) Me.Button3.Name = "Button3" Me.Button3.Size = New System.Drawing.Size(96, 24) Me.Button3.TabIndex = 2 Me.Button3.Text = "Button3" ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(1044, 285) Me.Controls.Add(Me.Button3) Me.Controls.Add(Me.Button2) Me.Controls.Add(Me.Button1) Me.Name = "Form1" Me.Text = "Form1" Me.WindowState = System.Windows.Forms.FormWindowState.Maximized Me.ResumeLayout(False) End Sub #End Region Dim lbl() As Label Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fo As New OpenFileDialog fo.ShowDialog() If fo.FileName <> "" Then For i As Integer = 0 To 100 '100 den vorgang machen Try ReDim lbl(100) For j As Int16 = 0 To 100 lbl(j) = New Label With lbl(j) .Parent = Me '.Parent.Controls.Add(lbl(0)) .Location = New Point(50 + j, 50) .Size = New Size(New Point(500, 500 - j)) .BackgroundImage = Image.FromFile(fo.FileName) .Enabled = True .Visible = True End With Next Catch ex As Exception MsgBox(ex.ToString) End Try Refresh() Button3.Text = "Durchgang: " & i 'System.Threading.Thread.Sleep(1000) Button2_Click(sender, e) Next End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'GC.SuppressFinalize() For i As Integer = 0 To UBound(lbl) lbl(i).BackgroundImage.Dispose() lbl(i).Dispose() Next 'For i As Integer = 0 To Me.Controls.Count() - 1 ' If Me.Controls.Item(i).GetType.ToString = "System.Windows.Forms.Label" Then ' Me.Controls.Item(i).BackgroundImage.Dispose() ' Me.Controls.Item(i).Dispose() ' 'Me.Controls.Item(i).Finalize() ' 'GC.SuppressFinalize(Me.Controls.Item(i)) ' End If 'Next End Sub End Class
Jeder Tip könnt hilfreich sein und reicht mir schon
PS: Darf natürlich auch frei weiterverwendet werden...