Ich habe diese Zeile Code:Win32.DestroyIcon vs. Icon.Dispose
System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
Einige Zeilen später, nachdem Symbol verwendet wird, habe ich die Zeile:
Win32.DestroyIcon(shinfo.hIcon);
jedoch, wenn ein Lauf statische Analyse auf meinem Code sagt es gibt ein Potenzial für Resource_Leak von Symbol. Ich frage mich, wird es keinen Unterschied machen, wenn ich die dispose-Methode aufrufen:
icon.Dispose();
statt die Win32.DestroyIcon(), die jetzt verwendet wird. Gibt es einen Unterschied zwischen ihnen? Ich behalte nur diesen Code, also bin ich nicht sicher, ob es eine spezielle Intention vom ursprünglichen Entwickler gab, um Win32.DestroyIcon zu benutzen.
Brilliant, danke Reed, wird als Antwort markieren, wenn ich kann. – DukeOfMarmalade
Tatsächlich zerstört 'icon.Dispose()' nur das Icon, wenn der (private) boolean 'ownHandle' wahr ist, und das hängt davon ab, wie das verwaltete Icon-Objekt konstruiert wurde. Insbesondere setzt ['Icon.FromHandle (..)' diesen booleschen Wert auf false] (https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Icon.cs.3a4e2c70109d46bc) und so [' Icon.Dispose() 'tut gar nichts] (https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Icon.cs8d050d7603efcc48). – JBSnorro