函数调用鉴于一些像这样的代码......防范系统的变化之间在Windows
auto res = GetScreenResolution();
// Can windows change the screen resolution between these calls?
// How do you guard against it?
DoSomething(res);
可以在屏幕的分辨率的函数调用之间是否会改变?从用户调整显示设置。我认为它可以但我会要求确定。
如果分辨率在两次调用之间发生变化,则函数DoSomething可能无法正常工作,或者根据代码导致严重问题。
有没有什么办法可以确保系统(或特定设置)在执行一段代码期间无法更改?
相同的概念可以应用于各种事情,如检查网络是否启动或检查文件的状态。
事情发生的概率很小,不值得打扰,但我很好奇。
一些隔夜的想法...
呼叫GetScreenResolution()后再次DoSomething的(),以检查匹配。这也可以让你撤销你所做的更改并改正它们。问题仍然存在,但仍然低得多。
有例外,DoSomething()可能会抛出一个软件异常与过时的数据。然后你可以做任何必要的事情。
如果您必须在GetScreenResolution和DoSomething之间进行大量处理,比如说一分钟,那么可能需要检查系统的更改。如果您收到解决更改的消息,则您也可以重置处理,如果您的体系结构允许的话。
然后它发生在_check_和执行之间。只要做到这一点,并为失败做好准备。 – CodeCaster