繁体   English   中英

GetWindowThreadProcessId竞争条件风险

[英]GetWindowThreadProcessId Race condition Risk

通过阅读另一个问题的评论,我发现使用GetWindowThreadProcessId Windows API方法时存在遇到竞争条件的风险。 这有多大的风险?

请允许我提供我正在尝试的内容的背景知识。 我正在用C#编写一个计时应用程序供我个人使用。 我的目的是让应用程序在活动窗口发生变化时检测(通过Win API调用),以便我可以记录正在使用的应用程序的时间。 我已经找到了检测活动窗口何时更改的代码; 现在我正在尝试确定与该窗口关联的进程。 我在SO上找到了几个指向GetWindowThreadProcessId作为解决方案的帖子,但正如我所提到的,使用它似乎存在潜在的问题。 如果GetWindowThreadProcessId不是一种安全的方法,那么我愿意接受其他选择。

我希望将代码完全保留在C#中,但我并不(完全)反对在必要时将其中的部分内容转换为C / C ++。

谢谢!

这场比赛是不可避免的。 没有API可以原子地做你想要的。

但这是一场相当温和的比赛。 什么可能出错? 在您询问之前,窗口已关闭。 所以你得到一个错误,然后再试一次。 您需要做的就是了解竞争条件并优雅地检查和处理错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM