Ich habe einen Timer, der unter anderem prüft, 5 Stellen auf dem Bildschirm für einen Farbwechsel. Mein Programm überwacht eine Telefonsystem-App und prüft, ob von einer der fünf Tasten ein neuer Anruf eingeht. Ich verwende den folgenden Code basierend auf einer anderen Frage, die ich gestellt hatte. Monitor an area of the screen for a certain color in Visual BasicSpeicherleck mit GetPixel/GetDC in Visual Basic
Private Function CheckforCall()
Try
Dim queue1 As Integer = GetPixel(GetDC(0), 40, 573)
Dim queue2 As Integer = GetPixel(GetDC(0), 140, 573)
Dim queue3 As Integer = GetPixel(GetDC(0), 240, 573)
Dim queue4 As Integer = GetPixel(GetDC(0), 340, 573)
Dim queue5 As Integer = GetPixel(GetDC(0), 440, 573)
ReleaseDC(0)
<code snipped - Checks to see if the pixel color matches and
returns true or false>
Catch ex As Exception
Return False
End Try
End Function
diesen Code verwenden, Objekte GDI skyrockets sehr schnell und innerhalb kurzer Zeit, wirft eine OutOfMemory Ausnahme. Ich gehe davon aus, dass ich den DC nicht richtig freigebe, aber ich finde keinen anderen Weg, dies zu tun.
Auch, fügen Sie die ReleaseDC in einem endgültigen Block, so ist es auch auf Ausnahme aufgeräumt. –
Schließlich nicht Catch. Jetzt wird es im normalen Pfad nicht aufräumen. :-) –
@JasonMalinowski: Ups! Habe ich es jetzt verstanden? –