Система.Рисование.Конструктор значков выбрасывает исключение "операция завершена успешно"



На машине с Windows XP следующий код создает систему.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, и на машине с Windows 7 код работает нормально.



EDIT: оказалось, что значок не работает в Windows XP вообще, добавление 256 цветных версий, кажется, исправило это.

656   4  

4 ответов:

Судя по всему, проблема заключается в том, чтобы не распоряжаться объектами должным образом. Трудно точно определить, где именно возникает проблема в вашем случае, но в качестве общего эмпирического правила убедитесь, что вы реализуете Директиву using при работе с объектами, которые реализуют IDisposable.

Даже в приведенном примере попробуйте сделать что-то вроде:

using (var icon = new System.Drawing.Icon("icon.ico"))
{
    // use icon
}
// icon is then disposed.

Прочтите эту статью.

Существует ли файл icon1.ico в том же каталоге, что и исполняемый файл .NET? Вы не сказали прямо...Вы читаете это как внешний файл значков? возможно, это

string sPath2Icon = Path.Combine(Environment.CurrentDirectory, "icon1.ico");
using (System.Drawing.Icon icon = new System.Drawing.Icon(sPath2Icon)){
    // Do what you have to do with icon!
}

Надеюсь, это поможет, С уважением, Том.

Оказалось, что значок не работал в Windows XP вообще, добавление 256 цветовых версий, кажется, исправило это.

У меня была похожая проблема. в моем случае файл значков был мультииконом, содержащим значки размером 32x32, 48x48 и 256x256. Я изменил его на файл с одним значком размером 32x32, и после этого он работал нормально.

Comments

    Ничего не найдено.