問出生的好奇心這裏的過程:反應到開始終止
我怎麼會去被通知或輪詢,看的時候正在終止的進程?
因此,我的應用程序可以偵聽進程中的「終止開始」事件,例如,以跟蹤特定進程需要平均關閉多長時間?
請注意,這不是與我的過程翻轉殺死開關,這將是簡單的是,但我的應用程序將只作爲觀察員。
任何幫助,將不勝感激:)
問出生的好奇心這裏的過程:反應到開始終止
我怎麼會去被通知或輪詢,看的時候正在終止的進程?
因此,我的應用程序可以偵聽進程中的「終止開始」事件,例如,以跟蹤特定進程需要平均關閉多長時間?
請注意,這不是與我的過程翻轉殺死開關,這將是簡單的是,但我的應用程序將只作爲觀察員。
任何幫助,將不勝感激:)
我知道你做這個沒有輪詢的唯一方法就是通過WMI。網上有很多例子,例如Using WMI to monitor process creation, deletion and modification in .NET。
WMI被.net庫包裝得很好。例如,上面的示例使用ManagementEventWatcher
來訂閱WMI事件。在System.Management
命名空間中有一個WMI善良的寶藏。
我真的不知道如果有一個這是一個「推」的操作(你以某種方式得到通知的結束進程)的方法。
但我會模仿這種觀察做的是創建一個Windows服務,在指定的時間間隔內輪詢進程(比如說,每隔2秒或無論多長時間都可以接受)。這樣,當另一個過程結束並採取相應行動時,您可以處理這種情況。
再次,不需要輪詢 –
我不知道是否有WIN32 API用於訂閱終止的進程的事件,但你可以簡單地通過獲取進程列表中運行做投票:
var processes = System.Diagnostics.Process.GetProcesses();
我會用ProcessId
作爲我的字典檢查它何時啓動以及何時終止的關鍵。
不需要輪詢。改用WMI。 –
+1。是的,完全忘記了它全部暴露在WMI中。 – Aliostad
@Aliostad WMI,忘了Windows的寶石...... –