強化された .NET 技術によるプロセス ランタイムの追跡
Process.GetProcessesByName
を使用するだけでは、アクティブなプロセスの一時的なビューしか提供されません。複数のインスタンスにわたるプロセスの実行時間を追跡するには不十分です。 より堅牢なソリューションが必要です。
正確なプロセス監視のための WMI の活用
Windows Management Instrumentation (WMI) は、プロセスの正確な開始時間と終了時間など、詳細なシステム イベントを監視するための強力なメカニズムを提供します。次の C# コードは、この目的のための WMI のアプリケーションを示しています。
<code class="language-csharp">using System; using System.Management; public class ProcessMonitor { public static void Main(string[] args) { // Watch for process start events using (ManagementEventWatcher startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"))) { startWatch.EventArrived += StartWatch_EventArrived; startWatch.Start(); // Watch for process stop events using (ManagementEventWatcher stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"))) { stopWatch.EventArrived += StopWatch_EventArrived; stopWatch.Start(); Console.WriteLine("Monitoring process starts and stops. Press any key to exit."); Console.ReadKey(); } } } private static void StopWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process stopped: {e.NewEvent.Properties["ProcessName"].Value}"); } private static void StartWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process started: {e.NewEvent.Properties["ProcessName"].Value}"); } }</code>
管理者権限でこのコードを実行すると、プロセスのライフサイクル イベントをリアルタイムで監視できます。 これにより、複数の実行にわたるあらゆるプロセスの実行時間を高精度に測定できます。 集中的な監視はシステムのパフォーマンスに影響を与える可能性があることに注意してください。
以上が.NET でプロセスの実行時間を正確に追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。