我正在使用 C# 撰寫一個應用程式,供用戶記錄他們對程式的時間使用情況。他們可以挑選流程并將它們存盤在資料庫中。
該應用程式當前正在使用一個計時器以 5 秒的間隔回圈遍歷設備上的每個正在運行的行程,并使用Diagnostics.Process.GetProcesses()此名稱串列與資料庫中的名稱串列進行比較。
這是一個合理的方法嗎?或者最好為資料庫中的每個行程創建一個執行緒來監聽它開始使用Win32Process.ProcessInfo.StartedEventHandler()?
uj5u.com熱心網友回復:
任何時候你可以避免投票,你應該。
在啟動時,您需要列舉行程以獲取當前系統狀態。在此之后,您可以使用 WMI 監視行程創建: 創建行程時是否有系統事件?. 您甚至可以修改該查詢以僅包含您關心的行程。
每當您獲得匹配項(在啟動時或 WMI 事件時),使用Diagnostics.process.GetProcesses()呼叫,并將事件處理程式附加到Process.Exeted事件:https : //docs.microsoft.com/en-us/dotnet/api/system.diagnostics .process.exited?view=net-5.0知道它什么時候關閉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/347999.html
上一篇:如何檢查檔案夾是否為空?
