2010-11-16 4 views
1

Je suis vraiment perplexe à ce sujet. Je crée un BitmapImage avec un tableau d'octets brut comme ceci:La création de BitmapImage à partir de MemoryStream provoque un crash - l'habitude de fonctionner

void SetBitmapData(byte[] imageData) 
{ 
    var bitmapImage = new BitmapImage(); 
    bitmapImage.BeginInit(); 
    bitmapImage.StreamSource = new MemoryStream(imageData); 
    bitmapImage.EndInit(); 

    this.Bitmap = bitmapImage; 
} 

Jusqu'à il y a une heure, il a travaillé - et avait travaillé pendant des mois. Maintenant, sur bitmapImage.EndInit(), il me donne une NotSupportedException - "Aucun composant d'imagerie approprié pour terminer cette opération n'a été trouvé."

Je suis vraiment confus car à partir de ce matin, cela a fonctionné. Rien n'a changé. En fait, pour m'assurer que mes changements (qui étaient dans des parties complètement indépendantes de l'application) ne causaient pas le crash, j'ai vérifié le code frais de SVN en utilisant la tête. La tête ne s'est pas crashée hier quand je l'ai commise. Cette nouvelle copie présente également le même comportement.

Il se bloque à partir de VS et lors de l'exécution de l'exécutable lui-même.

Je cours Visual Studio 2010 avec les plugins suivants: ReSharper, StyleCop for ReSharper, VisualSVN.

Juste avant que cela se produise, Visual Studio a fait quelque chose d'étrange - le curseur du clavier a disparu, mais je pourrais encore taper. Je pourrais sélectionner plusieurs caractères avec la souris et le clavier, et si j'appuie sur 'Supprimer', ils seront supprimés. J'ai redémarré Visual Studio, et le problème du curseur invisible est parti.

J'ai essayé de redémarrer mon ordinateur, mais cela n'a pas aidé.

+2

Êtes-vous sûr que c'est toujours les mêmes données cependant? Que faites-vous passer? – Stu

+0

Oh dérange. Après avoir examiné le problème avec une nouvelle paire d'yeux, il semble que l'image a été corrompue. – fre0n

Répondre

2

"Aucun composant d'imagerie approprié pour compléter cette opération n'a été trouvé." est levé lorsque l'appel à IWICBitmapEncoder_Initialize_Proxy échoue. Parce que votre VS2010 (qui utilise aussi ce genre de choses) agit aussi bien, je devine que certaines de vos DLL sont arrosées. Votre meilleur pari peut être de demander comment restaurer Windowscodecs.dll et Wincodec.lib sur SuperUser

Questions connexes