Hallo liebes Forum,
ich habe ein Problem mit meinem Fernwartungsprogramm, und zwar steigt der Ram Speicherverbrauch enorm an wenn ich zu viele Screenshots erstelle.
Dafür gibt es ja die Lösung ein Bild zu dispose´n also
das Problem ist ich kriege das einfach nicht hin ...
Ich wäre echt Dankbar wenn mir jemand helfen könnte
Mein jetziger Sourcecode sieht so aus(funktioniert alles blos eben das Dispose Problem...):
Screenshot:
Screenshot wird in 16 Teile geteilt:
Danach sollen diese Bilder mit alten Bildern verglichen werden, damit es effizienter wird also nur die geänderten Teile des Screenshots gesendet werden.
Dafür vergleiche ich jedes bitmap in dem Bitmap-Array also
Nach dieser Schleife muss ich aber alle neuen Bitmaps aus dem Ram kriegen...
Nun endgültige meine Frage wie schaffr ich das...
ich habe es schon mit
versucht aber das klappt halt nicht...
LG
ich habe ein Problem mit meinem Fernwartungsprogramm, und zwar steigt der Ram Speicherverbrauch enorm an wenn ich zu viele Screenshots erstelle.
Dafür gibt es ja die Lösung ein Bild zu dispose´n also
das Problem ist ich kriege das einfach nicht hin ...
Ich wäre echt Dankbar wenn mir jemand helfen könnte
Mein jetziger Sourcecode sieht so aus(funktioniert alles blos eben das Dispose Problem...):
Screenshot:
VB.NET-Quellcode
- Dim Bitmap As Bitmap
- Dim oScreens() As Screen = Screen.AllScreens
- Dim nScreenCount As Integer = oScreens.Length
- For i As Integer = 0 To nScreenCount - 1
- If i = screennumber Then
- Dim Rect As Rectangle = oScreens(i).Bounds
- Dim Bmp2 As Bitmap = New Bitmap(Rect.Width, Rect.Height)
- Using Gra As Graphics = Graphics.FromImage(Bmp2)
- Gra.CopyFromScreen(0, 0, 0, 0, Bmp2.Size)
- End Using
- Bitmap = New Bitmap(Bmp2, 1024, 768)
- Bmp2.Dispose()
- End If
- Next i
Screenshot wird in 16 Teile geteilt:
VB.NET-Quellcode
- Dim img As Image = Bitmap
- Dim sSize As New Size(img.Width / 4, img.Height / 4)
- Dim bmp(15) As Bitmap
- Dim g As Graphics
- For i As Integer = 0 To 15
- bmp(i) = New Bitmap(sSize.Width, sSize.Height)
- g = Graphics.FromImage(bmp(i))
- If i <= 3 Then
- g.DrawImage(img, New RectangleF(0, 0, sSize.Width, _
- sSize.Height), _
- New RectangleF(i * sSize.Width, 0, _
- sSize.Width, sSize.Height), GraphicsUnit.Pixel)
- ElseIf i <= 7 Then
- g.DrawImage(img, New RectangleF(0, 0, sSize.Width, _
- sSize.Height), _
- New RectangleF((i - 4) * sSize.Width, 1 * _
- sSize.Height, sSize.Width, sSize.Height), _
- GraphicsUnit.Pixel)
- ElseIf i <= 11 Then
- g.DrawImage(img, New RectangleF(0, 0, sSize.Width, _
- sSize.Height), _
- New RectangleF((i - 8) * sSize.Width, 2 * _
- sSize.Height, sSize.Width, sSize.Height), _
- GraphicsUnit.Pixel)
- ElseIf i <= 15 Then
- g.DrawImage(img, New RectangleF(0, 0, sSize.Width, _
- sSize.Height), _
- New RectangleF((i - 12) * sSize.Width, 3 * _
- sSize.Height, sSize.Width, sSize.Height), _
- GraphicsUnit.Pixel)
- End If
Danach sollen diese Bilder mit alten Bildern verglichen werden, damit es effizienter wird also nur die geänderten Teile des Screenshots gesendet werden.
Dafür vergleiche ich jedes bitmap in dem Bitmap-Array also
Nach dieser Schleife muss ich aber alle neuen Bitmaps aus dem Ram kriegen...
Nun endgültige meine Frage wie schaffr ich das...
ich habe es schon mit
versucht aber das klappt halt nicht...
LG