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?
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
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? –
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? –