首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Drawing.Icon构造函数引发“操作成功完成”异常

System.Drawing.Icon构造函数引发“操作成功完成”异常
EN

Stack Overflow用户
提问于 2010-03-01 22:51:00
回答 3查看 4.6K关注 0票数 5

在Windows XP计算机上,下面的代码抛出一个System.ComponentModel.Win32Exception,并显示消息“该操作已成功完成”

代码语言:javascript
复制
System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico");

我可以用以下命令来阻止程序崩溃

代码语言:javascript
复制
try
{
    System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico");
}
catch(System.ComponentModel.Win32Exception ex)
{
    if (ex.NativeErrorCode != 0)
    {
        throw;
    }
}

但当然,图标并未设置。

完整堆栈跟踪是

代码语言:javascript
复制
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色版本似乎已经解决了这个问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-29 05:17:53

事实证明,这个图标在Windows XP中根本不起作用,添加256种颜色的版本似乎已经修复了它。

票数 1
EN

Stack Overflow用户

发布于 2010-03-01 23:12:29

从外观上看,问题似乎是没有正确处理对象的问题。很难准确地指出您的问题发生在哪里,但作为一般的经验法则,在处理实现IDisposable的对象时,请确保实现using指令。

即使在您提供的示例中,也可以尝试执行以下操作:

代码语言:javascript
复制
using (var icon = new System.Drawing.Icon("icon.ico"))
{
    // use icon
}
// icon is then disposed.

请阅读此article

票数 1
EN

Stack Overflow用户

发布于 2011-04-03 19:33:36

我也遇到过类似的问题。在我的例子中,图标文件是一个多图标文件,包含32x32、48x48和256x256大小的图标。我把它改成了一个32x32大小的图标文件,之后它就工作得很好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2356580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档