[英]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.