托管等效于DestroyIcon

时间:2018-10-03 18:24:43

标签: c# .net

是否存在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在Window之外均不可用。我的应用程序需要在Windows,Mac和Linux上运行。我做了一些研究,Mono网站说,

  

如果您要呼叫平台提供的内容   (通常是win32 API),则必须找到一种方法来完成   在所有目标平台上都具有相同的功能。这可能意味着   将非托管电话替换为托管对等电话,否则它可以   表示检测您正在运行的平台并致电   Win32 / * nix / OSX / etc。等效。

pinvoke.net说,Omnicoder的Managed Windows API是一种替代方法,但它不提供DestroyIcon方法。

0 个答案:

没有答案