Compte tenu du code comme ça ...contre les changements Gardiennage système entre appels de fonction dans Windows
auto res = GetScreenResolution();
// Can windows change the screen resolution between these calls?
// How do you guard against it?
DoSomething(res);
la résolution de l'écran peut être changé entre les appels de fonction? Dites de l'utilisateur en ajustant les paramètres d'affichage. Je suppose que cela peut, mais je vais demander la certitude.
Si la résolution est modifiée entre les appels, la fonction DoSomething peut ne pas fonctionner correctement ou provoquer un problème majeur en fonction du code. Y a-t-il moyen de s'assurer que le système (ou les paramètres particuliers) ne peut pas être changé pendant l'exécution d'un code?
Le même concept pourrait être appliqué à diverses choses, comme vérifier si un réseau est en cours ou vérifier l'état d'un fichier.
La probabilité que quelque chose se passe est si petite que cela ne vaut pas le coup de s'en soucier, mais j'étais curieux.
Quelques réflexions nuit ...
Appel GetScreenResolution() après DoSomething() pour vérifier un match. Cela vous permettrait également d'annuler les modifications que vous avez apportées et de les corriger. Il est toujours possible qu'un problème se produise, mais c'est beaucoup plus bas encore.
Avec des exceptions, DoSomething() peut lancer une exception logicielle avec des données obsolètes. Vous pouvez alors faire tout ce qui est nécessaire.
Si vous devez effectuer beaucoup de traitement entre GetScreenResolution et DoSomething, par exemple pendant une minute, il peut être utile de vérifier les modifications apportées au système. Si vous recevez un message indiquant que la résolution a été modifiée, vous pouvez également réinitialiser le traitement si votre architecture le permet.
Et puis il se passe entre le _check_ et l'exécution. Faites-le et préparez-vous à l'échec. – CodeCaster