Comment mettre fin à un programme quand il se bloque? (ce qui devrait échouer un test d'unité au lieu de rester coincé à jamais)

Nos tests unitaires de déclencher les processus enfants, et parfois, ces enfants des processus de collision. Lorsque cela se produit, un rapport d'Erreurs Windows boîte de dialogue pop-up, et le processus reste actif jusqu'à ce que ce soit manuellement rejeté. Bien sûr, cela empêche les tests unitaires de jamais s'arrêter.

Comment cela peut-il être évité?


Voici un exemple de boîte de dialogue dans Win7 avec les habituels réglages:

Comment mettre fin à un programme quand il se bloque? (ce qui devrait échouer un test d'unité au lieu de rester coincé à jamais)

Si je désactive le AeDebug clé de registre, le débogage JIT option disparaît:

Comment mettre fin à un programme quand il se bloque? (ce qui devrait échouer un test d'unité au lieu de rester coincé à jamais)

Si je désactive la vérification de la solution (la seule chose qui me semble avoir le contrôle via le panneau de contrôle), ça ressemble à ça, mais apparaît encore et toujours s'arrête le programme de la mort jusqu'à ce que l'utilisateur appuie sur quelque chose. WerAddExcludedApplication est documenté aussi avoir cet effet.

Comment mettre fin à un programme quand il se bloque? (ce qui devrait échouer un test d'unité au lieu de rester coincé à jamais)

  • Comment faites-vous appel à WerAddExcludedApplication?
  • J'ai peur depuis, j'ai supprimé ma déclaration extern, et il n'y en a pas un sur pinvoke.net. Donc je ne peux pas dire exactement comment je l'ai appelé la dernière fois. Il semble être un leurre; il semble que de désactiver l'envoi du rapport, peu, pas du tout crash boîte de dialogue.