2010-03-01 8 views
5

Auf einem Windows XP-Rechner zu werfen, der folgende Code wirft eine System.ComponentModel.Win32Exception mit der Meldung „Der Vorgang wird erfolgreich abgeschlossen“System.Drawing.Icon Konstruktor „Operation erfolgreich beendet“ Ausnahme

System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico"); 

I kann das Programm abstürzen mit

aber natürlich ist das Symbol nicht gesetzt.

Der vollständige Stack-Trace ist

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" 

dieser Linie 50 die ursprüngliche Linie ist habe ich geschrieben.

Dies ist eine WPF-App, und auf einem Windows 7-Computer funktioniert der Code gut.

BEARBEITEN: Es stellte sich heraus, dass das Symbol in Windows XP überhaupt nicht funktionierte, das Hinzufügen von 256 Farbversionen scheint es zu beheben.

Antwort

1

Es stellte sich heraus, dass das Symbol in Windows XP überhaupt nicht funktionierte, das Hinzufügen von 256 Farbversionen scheint das Problem behoben zu haben.

1

Aus den Augen scheint das Problem ein Problem mit nicht ordnungsgemäß mit Objekten zu sein. Es ist schwierig, genau festzustellen, wo das Problem in Ihrem Fall auftritt, aber als allgemeine Faustregel stellen Sie sicher, dass Sie die using-Direktive implementieren, wenn Sie mit Objekten arbeiten, die IDisposable implementieren.

Auch in der Probe Sie versuchen, etwas zu tun, wie zur Verfügung gestellt haben:

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

Haben Sie einen Lese dieses article.

+0

Dies war nicht das Problem, die Ikone wurde gerade gebrochen, aber das wird uns mit Sicherheit später Kopfschmerzen ersparen! – jonnystoten

1

Existiert die Datei icon1.ico im selben Verzeichnis wie die .NET-Programmdatei? Du hast nicht explizit gesagt ... liest du das als externe Icon-Datei? vielleicht ist dies

 
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! 
} 

hoffe, das hilft, Mit freundlichen Grüßen, Tom.

0

Ich hatte ein ähnliches Problem. In meinem Fall war die Icon-Datei eine Multi-Icon-Datei mit 32x32, 48x48 und 256x256 Icons. Ich änderte es in eine einzelne Symboldateigröße 32x32 und es funktionierte danach gut.

Verwandte Themen