Duk*_*ade 5 c# garbage-collection dispose
我有这行代码:
System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
Run Code Online (Sandbox Code Playgroud)
几行之后,在使用图标之后我有了这条线:
Win32.DestroyIcon(shinfo.hIcon);
Run Code Online (Sandbox Code Playgroud)
但是,当对我的代码运行静态分析时,它表示Resource_Leak可能来自图标.我想知道如果我调用dispose方法会有什么不同:
icon.Dispose();
Run Code Online (Sandbox Code Playgroud)
而不是现在正在使用的Win32.DestroyIcon().它们之间有什么区别吗?我只是维护这段代码所以我不确定原始开发人员是否有任何使用Win32.DestroyIcon的特殊内容.
静态分析正在触发,因为您没有处置"IDisposable资源".
我建议坚持使用托管版本,并使用icon.Dispose().这将(内部)照顾DestroyIcon你,但始终坚持纯托管API.
Win32.DestroyIcon实际上更适用于您正在接收的图标IntPtr,而不是用于Icon完全由框架管理的实例.