C# 销毁图标的管理等价物

C# 销毁图标的管理等价物,c#,.net,C#,.net,是否有与DestroyIcon(便携式)等效的托管或多平台? 我目前的代码是: Icon newIcon = Icon.FromHandle(bitmap.GetHicon()); Program.main.Icon = newIcon; newIcon.Dispose(); 但是,Dispose()还不够,图标的内存也会泄漏。因为这会运行很多次,程序很快就会耗尽内存并崩溃。文档中说要使用DestroyIcon(newIcon.Handle),但这需要 [System.Runtime.Inte

是否有与DestroyIcon(便携式)等效的托管或多平台? 我目前的代码是:

Icon newIcon = Icon.FromHandle(bitmap.GetHicon());
Program.main.Icon = newIcon;
newIcon.Dispose();
但是,Dispose()还不够,图标的内存也会泄漏。因为这会运行很多次,程序很快就会耗尽内存并崩溃。文档中说要使用
DestroyIcon(newIcon.Handle),但这需要

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = CharSet.Auto)]
extern static bool DestroyIcon(IntPtr handle);
并且user32.dll在窗口之外的任何地方都不可用。我的应用程序需要在Windows、Mac和Linux上运行。我做了一些调查Mono网站上说

如果您正在调用平台提供的内容 (通常是win32 API),您必须找到一种方法来完成 在所有目标平台上都具有相同的功能。这可能意味着 用等效的托管调用替换非托管调用,也可以 这意味着检测您运行的平台并调用 Win32/*nix/OSX/等等效软件


说Omnicoder的托管Windows API是一种替代方法,但它没有提供DestroyIcon方法。

我知道没有托管的等效方法<代码>图标。Dispose
不会释放图标的句柄,因为它是由
位图创建的,而不是由
图标创建的;管理该句柄不是图标的工作。请注意。在这个问题解决之前,你不必担心。应该需要一段时间。