在Windows XP计算机上,下面的代码抛出一个System.ComponentModel.Win32Exception,并显示消息“该操作已成功完成”
System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico");我可以用以下命令来阻止程序崩溃
try
{
System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico");
}
catch(System.ComponentModel.Win32Exception ex)
{
if (ex.NativeErrorCode != 0)
{
throw;
}
}但当然,图标并未设置。
完整堆栈跟踪是
at System.Drawing.Icon.Initialize(Int32 width, Int32 height)
at System.Drawing.Icon..ctor(String fileName, Int32 width, Int32 height)
at System.Drawing.Icon..ctor(String fileName)
at hermes.Window1..ctor() in D:\\projects\\hermesclient\\hermesWPF\\hermes\\Window1.xaml.cs:line 50"第50行是我发布的原始行。
这是一个WPF应用程序,在Windows7机器上代码运行良好。
编辑:原来这个图标在Windows XP中根本不起作用,添加256色版本似乎已经解决了这个问题。
发布于 2011-07-29 05:17:53
事实证明,这个图标在Windows XP中根本不起作用,添加256种颜色的版本似乎已经修复了它。
发布于 2010-03-01 23:12:29
从外观上看,问题似乎是没有正确处理对象的问题。很难准确地指出您的问题发生在哪里,但作为一般的经验法则,在处理实现IDisposable的对象时,请确保实现using指令。
即使在您提供的示例中,也可以尝试执行以下操作:
using (var icon = new System.Drawing.Icon("icon.ico"))
{
// use icon
}
// icon is then disposed.请阅读此article。
发布于 2011-04-03 19:33:36
我也遇到过类似的问题。在我的例子中,图标文件是一个多图标文件,包含32x32、48x48和256x256大小的图标。我把它改成了一个32x32大小的图标文件,之后它就工作得很好了。
https://stackoverflow.com/questions/2356580
复制相似问题