Dispose GDI Objects
Jeg har lavet en klasse der nedarver fra ListView. Denne liste finder alle filer i en bestemt mappe, henter ikonet for filen og viser ikonet+filnavn i listen, for hver fil (er lidt mere avanceret end bare en almindelig file-explorer, men hvad angår dette problem, lad os bare sige at det egentligt bare er det samme... just to keep it simple)Jeg har et problem ved disposal af GDI objekter, holder man øje med taskmanager stiger antallet af GDI objekter hver gang den bliver opdateret
Her er den kode, hvor antallet stiger:
[code]
Dim shinfo As SHFILEINFO = New SHFILEINFO
shinfo.szDisplayName = New String(Chr(0), 260)
shinfo.szTypeName = New String(Chr(0), 80)
For each filename as string in FileNameList
Dim hImgSmall As IntPtr
hImgSmall = SHGetFileInfo(filename, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
Next
[/code]
Dette er den del af koden der hæver antallet at GDI objekter. Jeg har selvfølgelig en del kode derefter, der faktisk får fat i ikonet og tilføjet det hele til listen, men den del har jeg udkommenteret lige nu, for at tage fat om problemet hvor den er
Jeg har læst rundt omkring på nettet om at bruge CloseHandle(hImgSmall) til at frigøre den, men det gør ingen forskel
Any ideas?