На компьютере с 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, и на компьютере с Windows 7 код работает нормально.
РЕДАКТИРОВАТЬ: оказалось, что иконка вообще не работала в Windows XP, добавление 256 цветных версий, похоже, исправило ее.