vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Memory Leak 
Autor: Keex
Datum: 12.09.12 10:24

Hallo zusammen,
ich habe ein Problem. Ich speichere in einem Programm Bilder, und bevor ich dies tue lege ich ein Overlay auf das Bild. Das speichern selber klappt problemlos, aber wenn ich das Overlay drauflege bekommt mein Programm ein Speicherleck. Meine Overlay Funktion sieht wie folgt aus. Das Leck tritt nur im "True" Fall auf. Dort möchte ich zunächst mein Ursprungsbild, das ich der Funktion übergebe, um einen gewissen Wert vergrößern. Ich versuche eigentlich alle Ressourcen freizugeben, sowohl Bitmaps wie auch die Graphics-Objekte, aber trotzdem staut sich irgendwas im Speicher auf und ich habe keine Idee mehr, woran das liegt.

Function makeoverlay(ByVal bmp As Bitmap) As Bitmap
        Dim g As Graphics = Graphics.FromImage(bmp)
 
        Dim theight, theight2 As Integer
        theight = g.MeasureString(Date.Now.ToString, New Font("Arial", _
          25)).Height
        theight2 = g.MeasureString(Date.Now.ToString, New Font("Arial", _
        12)).Height
 
        Dim boxloc, timestamploc, commentloc As Point
        Select Case CaptureStuff.append
            Case True
 
		'---------------- Problem tritt hier auf --------------------
		'No Memory leak, if False, so it must be something problematic here
                Dim oldheight As Integer = bmp.Height
                Dim newbmp As New Bitmap(bmp.Width, bmp.Height + Math.Max(CInt( _
                  CaptureStuff.height + 6), CInt(3 * theight2)))
                Dim imgdraw As Graphics = Graphics.FromImage(newbmp)
                imgdraw.FillRectangle(Brushes.White, 0, 0, newbmp.Width, _
                  newbmp.Height)
                imgdraw.DrawImage(bmp, 0, 0)
                imgdraw.Dispose()
                g.Dispose()
                bmp.Dispose()
                bmp = newbmp
                g = Graphics.FromImage(bmp)
		'--------------------------------------------------------
 
                boxloc = New Point(10, oldheight + 2)
                timestamploc = New Point(CaptureStuff.width + 20, oldheight + 2)
                commentloc = New Point(CaptureStuff.width + 20, oldheight + 2 + _
                  theight2 + 3)
 
 
            Case False
                timestamploc = New Point(10, 10)
                boxloc = New Point(10, 10 + 10 + theight)
                commentloc = New Point(10, 10 + 10 + theight + 10 + _
                  CaptureStuff.height)
        End Select
 
	'....
	'hier wird noch ein wenig auf g herumgemalt
	'....       
 
 
        g.Dispose()
        Return bmp
End Function
Ich würde mich sehr freuen, wenn ihr mal drüber schauen könntet. Vieleicht fällt euch der Fehler ins Auge. Falls weitere Infos benötigt sind, immer gern.

Vielen Dank und beste Grüße
Keex
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Memory Leak1.741Keex12.09.12 10:24
Re: Memory Leak1.155Manfred X12.09.12 10:59
Re: Memory Leak1.296Keex12.09.12 11:07
Re: Memory Leak1.208keco12.09.12 12:23
Re: Memory Leak1.154ModeratorFZelle12.09.12 21:21
Re: Memory Leak1.198keco13.09.12 11:21
Re: Memory Leak1.099ModeratorDaveS12.09.12 13:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel