2010-12-08 29 views
4

Y at-il une méthode pour les jeux C# XNA qui détecte si l'utilisateur a cliqué sur le bouton croisé pour fermer le programme, ou a appuyé sur les touches ALT + F4 pour fermer ..?Comment faire pour implémenter une méthode OnExit like dans mon jeu XNA?

Les touches ALT + F4 peuvent probablement être détectées à partir de KeyBoardState, mais comment puis-je détecter le clic du bouton croisé pour fermer la fenêtre?

je besoin de ce que je puisse arrêter tous les fils en cours d'exécution lorsque l'utilisateur ferme le jeu par tout moyen .. J'ai actuellement des discussions toujours en cours lorsque la fin du jeu qui rend la musique joue encore: P

S'il vous plaît noter que la méthode doit être à la fois Windows et Xbox 360 compatible, comme le jeu est censé fonctionner sur les deux ces plates-formes (Zune probablement trop) ..

+0

double possible de [? Comment puis-je vérifier si le jeu était fermé] (http://stackoverflow.com/questions/2997323/how-do-i-check-if- le-jeu-était-fermé) –

Répondre

8

soit remplacer la méthode OnExiting du Game ou susbcribe à son événement Exiting.

Exemple:

protected override void OnExiting(Object sender, EventArgs args) 
{ 
    base.OnExiting(sender, args); 

    // Stop the threads 
} 
+0

Pouvez-vous donner un exemple? J'ai essayé d'écrire ce code dans la classe de jeu hérité: .. – Ahmad

+0

OnExiting vide virtuel protégé ( objet expéditeur, EventArgs args ) { timeToQuit = true; Quitter(); } – Ahmad

+0

Et essayé de définir un point d'arrêt à la première instruction, puis couru le jeu et appuyez sur ALT + F4 pour voir si je vais à ce point d'arrêt .. Je n'ai pas .. Le jeu se ferme naturellement .. Cela signifie que le jeu quitté à la commande Windows ALT + F4 pour fermer une fenêtre, pas à cause du code que j'ai mentionné ci-dessus .. – Ahmad