11
votes

Comexception quand j'utilise une popup dans WPF

J'ai une exception très gênante qui gèle mon application lancée par WPF, lorsque le contenu de cette popup semble avoir à beaucoup d'élément. Dans les fenêtres de sortie, je vois approximativement 50 fois cette exception.

'System.RunTime.Interopservices.ComeXception' eu lieu dans uautomationprovider.dll

Puis parfois après le gel, j'ai cette exception:

Contextswitchdeadlock a été détecté Message: Le CLR a été incapable de Transition de Com contexte 0x3bd0048 à com contexte 0x3bd01b8 pour 60 secondes. Le fil qui possède le Le contexte de la destination / appartement est le plus probablement soit faire une attente de non pompage ou traiter une très longue course opération sans pomper les fenêtres messages. Cette situation a généralement un impact négatif sur la performance et peut même conduire à l'application devenant Utilisation non réactive ou de mémoire accumuler continuellement au fil du temps. À Évitez ce problème, tout seul Fils d'appartement fileté (STA) devrait utiliser des primitives d'attente de pompage (tels que CowatreformultipleHhandes) et pomper régulièrement des messages pendant longtemps Opérations de course.

Je n'utilise aucun composant com dans mon code, quelqu'un a-t-il déjà eu ce problème?

L'impasse est détectée par le débogueur et n'a pas de stacktrace. L'exception COM StackTrace est la suivante:

{"Un événement n'a pas pu invoquer l'un des les abonnés (exception de HRESULT: 0x80040201) "}

à System.runtime.interopservices.marshal.throwexceptionForRinternal (int32 ErrorCode, intPtr ErrorInfo)

à Ms.internal.automation.uiacoreproviderapi.uiahostproviderfromhwnd (intPTR hwnd)

Lorsque j'appelle xxx


4 commentaires

J'ai eu un problème similaire, mais je ne me souviens pas du contexte. Pouvez-vous poster le code concerné ou une standingTrace?


Merci, j'ai mis à jour ma question!


Terrible bug d'avoir dans WPF 4.0, il suffit de dire.


Lors du débogage d'une application WPF, j'avais eu cette exception lors de l'ouverture d'une liste déroulante de ComboBox. J'ai eu un mini-monstre mais je ne pouvais pas recréer la question. J'ai également remarqué qu'après l'explosion de la combinaison de mon groupe Win XP, les fenêtres virtuelles de l'application virtuelle ont disparu (mais étaient toujours en cours d'exécution, apparemment). Des choses bizarres.


3 Réponses :


4
votes

Une solution consiste à faire visibilité = "effondré" sur le contenu de la popup, au lieu de fermer la popup, mais c'est un peu hacky.


0 commentaires

1
votes

J'ai rencontré le même problème. Je suppose que c'était lié à un moniteur Dell activé multitouch attaché à mon ordinateur. Lorsque j'ai arrêté le service d'intrants de la tablette, les compressions ont disparu. Peut-être que c'est une option pour vous aussi.


0 commentaires

1
votes

J'ai corrigé ce problème en désinstallant un stylo Wacom et une tablette tactile et en désactivant le service d'entrée de la tablette. J'ai rencontré ce problème avec les popups WPF (TogglePopups, ComboBoxes, etc.) et les expandeurs.


0 commentaires