le programme s'est terminé avec le code -1073610751 (0xc0020001)

J'ai une erreur étrange sur un SharpDX programme que j'ai fait.

Le programme contient un formulaire MainForm, qui hérite de l' SharpDX.Windows.RenderForm (je suis en train de faire Direct3D 9). J'ai un peu de logique qui tue le programme en appelant MainForm.Close(), et il fonctionne parfaitement.

Cependant, lorsque je ferme le formulaire avec le bouton X, ou en double cliquant sur le coin supérieur gauche de l'écran, le programme se termine avec le code -1073610751 (0xc0020001).

Ce qui est relativement mineur à la gêne, car il ne se produit que lorsque le programme est de finition, de sorte qu'il n'a pas vraiment d'importance si elle sort avec une erreur, car c'est en fait la finition.

Toutefois, cette erreur ne se produit pas lorsque j'ai mis un point d'arrêt à la dernière ligne de mon Main(). Si je le fais, et puis fermez la fenêtre comme je l'ai expliqué, le point d'arrêt se fait frapper, et la reprise de l'termine le programme avec le code 0.

En dehors de SharpDX et un pur DLL C je fais appel à one-shot le traitement de certaines données, je ne fais pas le code mixte, ou tout autre truc bizarre.

J'ai regardé autour, mais ce code semble être lié à la chaîne de liaisons? d'autres personnes semblent avoir ce problème quand on fait bizarre mixte C++/CLI trucs, mais je ne fais pas quelque chose comme ça.

Des idées? au moins sur la façon d'obtenir plus de renseignements concis sur ce code d'erreur?

Suivez ce lien... blogs.msdn.com/b/cbrumme/archive/2003/04/15/51318.aspx - il semble probable à partir de votre description de certains de traitement de messages (ou d'autres rappels de COM à votre programme) est mis en place qui revient à la votre - ou SharpDX est géré par des méthodes et n'est pas nettoyé (dans le temps). Si ces rappels alors se produire après l'géré exécution s'arrête, vous obtiendrez cette erreur. Si cette théorie tient, en mettant un point d'arrêt sur la dernière ligne pour laisser le temps à la nettoyer.
Peut-être que vous devez déboguer le code aussi à montrer un peu de code aiderait vraiment si c'est une 3ème partie .DLL peut-être vous avez besoin de Dispose des objets créés manuellement. Qu'avez-vous essayé jusqu'à présent..?
Pourrait-il être? connect.microsoft.com/VisualStudio/feedback/details/336844/...
Je ne le pense pas, parce que comme je l'ai dit, je ne suis pas l'utilisation mixte des assemblées. Sauf SharpDX fait mixte des trucs, mais c'est très peu probable.
Il peut être un problème dans SharpDX lui-même - ou peut-être SharpDX tenter (ou pas) pour nettoyer quelque chose que vous ne nettoyez pas vous-même au dernier moment, par exemple, à l'instar de @DJKRAZE dit, quelque chose que vous devez Dispose, ou d'un gestionnaire d'événements, vous devez détacher. Je suis tout à fait sûr que le code d'erreur est le même dans tous les cas (dans ce cas) - la chaîne de liaison de l'erreur, et celui que j'ai lié impliquent des appels de COM (ou code non managé) pour le code managé après l'exécution a commencé à l'arrêt. SharpDX est, en effet, purement de code managé, mais l'appel (et d'être appelé par) COM.

OriginalL'auteur Panda Pajama | 2013-08-07