Concernant ExecuteEngineException, il y a cette description dans le SDK du framework .net :
« Les erreurs du moteur d'exécution sont des erreurs fatales et ne devraient jamais se produire. De telles erreurs se produisent principalement lorsque le moteur d'exécution est endommagé ou que des données sont perdues. Le système lèvera cette exception à tout moment. Lorsque cela est possible, le système lancera une exception qui fournit plus d'informations que l'ExecutionEngineException.
Les applications ne devraient pas lancer ExecutionEngineException.
Comme le montre cette description, l'ExecutionEngineException ne devrait pas être possible dans un programme normal, erreur fatale. Cependant, aujourd’hui, j’ai rencontré cette anomalie à plusieurs reprises.
La situation spécifique ressemble à peu près à ceci : un contrôle COM avec fonction de visualisation, utilisé dans .net. Cette visionneuse a une fonctionnalité selon laquelle lorsque certains changements se produisent dans la zone visuelle actuelle, deux événements seront déclenchés. Dans des cas plus spécifiques, la différence de temps entre le déclenchement de ces deux événements peut être très faible, se produisant presque en même temps. À l'heure actuelle, la possibilité que le programme .net externe provoque une ExecutionEngineException devient très élevée. Fondamentalement, elle sera rencontrée au moins une fois dans chaque opération, et bien sûr, elle ne peut être rencontrée qu'une seule fois, car une fois rencontrée, elle. va presque s'écraser.
Cela devrait toujours être un problème qui se produit lorsque .net interagit avec COM. Bien que je ne connaisse pas le processus spécifique, vous pouvez le deviner grossièrement : lorsque le premier événement se produit, .net commence à le traiter, et avant que le traitement ne soit terminé, le deuxième événement L'incident s'est reproduit et l'anomalie est née.
C'est plus facile à gérer si vous connaissez la raison. Ajoutez un mécanisme de suspension d'événements afin que l'intervalle de temps de déclenchement de deux événements ne soit pas trop petit pour éviter la récurrence de deux événements se déclenchant presque en même temps. Effectivement, après un essai, cette anomalie ne s'est plus produite. Si vous rencontrez un phénomène similaire, autant tenter cette idée.
PS, l'environnement que j'utilise ici est .net framework 1.1. On ne sait pas encore si le même phénomène se produit sous .net framework 2.0.
http://www.cnblogs.com/sunwaywei/archive/2006/08/21/482674.html