2011-01-17 9 views
15

Cas d'utilisation: j'utilise WPF pour superposer dynamiquement du texte sur des images dans un contexte Web.System.Windows.Media.DrawingVisual.RenderOpen() après un certain temps

Solution: J'utilise un DrawingContext d'un DrawingVisual (enveloppé dans un communiqué using) pour dessiner le bitmap original et superposer du texte.

Problème: Après quelques milliers de demande à la méthode [DrawingVisual].RenderOpen() commence à refuser d'exécuter et lance l'exception suivante:

The system cannot find the file specified System.ComponentModel.Win32Exception UInt16 RegisterClassEx(WNDCLASSEX_D) at MS.Win32.UnsafeNativeMethods.RegisterClassEx(WNDCLASSEX_D wc_d) 
at MS.Win32.HwndWrapper..ctor(Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 width, Int32 height, String name, IntPtr parent, HwndWrapperHook[] hooks) 
at System.Windows.Media.MediaContextNotificationWindow..ctor(MediaContext ownerMediaContext) 
at System.Windows.Media.MediaContext..ctor(Dispatcher dispatcher) 
at System.Windows.Media.MediaContext.From(Dispatcher dispatcher) 
at System.Windows.Media.Visual.VerifyAPIReadWrite() 
at System.Windows.Media.DrawingVisual.RenderOpen() 
at ... 

Temp fix: La seule solution pour cela est de recycler le pool d'applications IIS sur le serveur qui résout le problème pendant quelques heures. Question: Quelqu'un at-il une idée de la cause de ce problème (fuites, threading, code non géré, etc.)? Existe-t-il un autre moyen d'obtenir du texte sur une image en évitant le visuel visuel? Peut-être écrire la géométrie à un bitmap et superposer les bitmaps directement?

+1

Je vais avoir un problème similaire: http://stackoverflow.com/questions/5195808/wpf-formattedtext-the-system-cannot-find-the-file -specified-exception-in-a-serv – Aligned

+0

Pouvez-vous partager un extrait de code de la façon dont vous obtenez le DrawingContext et le DrawingVisual? Pourquoi ne pas simplement recycler le DrawingVisual? Autorisez-vous le répartiteur à pomper? –

+0

Je sais que c'est une vieille question, mais le processus fuit-il la mémoire ou les poignées? On dirait que peut-être un hang hang aiderait à aller à la racine du problème? –

Répondre

1

Ceci est un ancien correctif - et j'aurais supposé qu'il était inclus dans .NET 4.x - mais je ne suis pas si sûr. Quoi qu'il en soit - Vous pouvez essayer.

» Discussion & Bug Report

» .NET Patch(x86)

Questions connexes