簡體   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