En tant que programmeur, les deux réponses publiées jusqu'à présent sont incorrectes. S'il est possible de trouver une situation hypothétique dans laquelle appuyer sur Alt + F4 corromprait une sauvegarde en cours, le faire nécessiterait les développeurs doivent délibérément faire tout leur possible pour bousiller le système de sauvegarde.
Du point de vue du codage, l'utilisateur qui appuie sur Alt + F4 ne le fait pas «ferme la fenêtre active», ni «n'interrompt le programme». Ce qu'il fait, c'est que Windows place un message WM_CLOSE
dans la file d'attente d'événements du programme. C'est tout.
La file d'attente d'événements, comme son nom l'indique, est une file d'attente d'événements que le programme doit traiter; cela consiste principalement en une entrée de l'utilisateur. Au cœur du code de pratiquement tous les programmes pilotés par des entrées externes, y compris les jeux, se trouve ce que l'on appelle une boucle d'événements , qui vérifie les entrées dans la file d'attente d'événements, les traite, puis répète les deux dernières étapes dans une boucle pour toujours jusqu'à ce qu'il soit temps d'arrêter.
Il y a deux choses à garder à l'esprit ici. Le premier est que la boucle d'événements est une chose linéaire: vous ne traitez pas l'événement n ° 2 tant que vous n'avez pas terminé le traitement de l'événement n ° 1.
Et le second est qu'un code WM_CLOSE > le message ne "quitte pas le programme". C'est un type d'entrée spécial, rien de plus. Il indique au programme que l'utilisateur a demandé que le programme ferme la fenêtre courante. Le programme est libre de répondre à cela de la manière dont son code l'indique, y compris l'ignorer complètement. (C'est une chose très grossière à faire, mais les développeurs le font parfois.) L'une des réponses les plus courantes est de demander à l'utilisateur "Voulez-vous enregistrer avant de quitter?" et / ou de fournir un moyen d'annuler la demande de fermeture.
Que se passe-t-il donc si l'utilisateur appuie sur Alt + F4 alors que le jeu est en cours de sauvegarde? Gardez à l'esprit le premier point: le traitement est linéaire. En supposant que la sauvegarde a lieu dans le thread principal - que je couvrirai un peu plus loin - le code ne peut même pas vérifier la file d'attente d'événements pour voir qu'il a reçu un message WM_CLOSE
jusqu'à ce l'enregistrement est terminé. Il n'y a donc rien à interrompre.
Il est toujours possible qu'un programme informatique fasse deux choses à la fois. Ceci est connu sous le nom de multithreading , exécutant au moins deux "threads" linéaires d'exécution de code en même temps. Quelqu'un pourrait donc demander: "Que se passe-t-il s'il est enregistré dans un fil de discussion différent pendant que le message WM_CLOSE
arrive et est traité?" La réponse à cette question est que tous les développeurs qui font cela, leur code est susceptible de corrompre les fichiers de sauvegarde à gauche, à droite et au centre même sans que l'utilisateur ne demande à quitter à un moment inopportun. En effet, sauvegarder signifie écrire sur disque une copie de l'état du jeu en ce moment. Si vous faites cela sans interrompre le jeu, il est possible que quelque chose puisse changer entre le moment où vous commencez à enregistrer et lorsque vous avez terminé, puis le fichier de sauvegarde se termine par des données qui se réfèrent à l'ancien état du jeu et d'autres qui font référence. au nouvel état, qui n'a aucun sens ensemble, et vous avez maintenant un fichier de sauvegarde corrompu.
C'est en fait l'une des premières choses que l'on apprend sur le multi-threading: ne laissez jamais deux threads toucher les mêmes données en même temps si l'un d'entre eux (ou les deux) va les changer. Ne pas suivre ce principe crée des conditions de compétition où les données sont corrompues et les choses échouent de manière bizarre. Tout développeur compétent fera tout son possible pour éviter les scénarios dans lesquels une condition de concurrence apparaîtrait. Donc, un développeur enregistrant du code qui effectue une sauvegarde sur un thread séparé serait très probablement regardé avec horreur par le reste de l'équipe de développement!
TL; DR: Si votre Le jeu effectue déjà des sauvegardes automatiques sans se corrompre, il est prudent de supposer qu'il n'y a aucun risque de corruption en demandant poliment au jeu de s'arrêter, (c'est ce que fait Alt + F4 ,) même si vous le faites au milieu d'une sauvegarde. Lorsque les écrans d'avertissement vous indiquent de ne pas arrêter le jeu pendant la sauvegarde, cela signifie la mise hors tension ou d'autres moyens plus drastiques de mettre fin au jeu.