Maison > développement back-end > C++ > Comment puis-je suivre avec précision le temps d'exécution des processus dans .NET ?

Comment puis-je suivre avec précision le temps d'exécution des processus dans .NET ?

Barbara Streisand
Libérer: 2025-01-21 00:42:09
original
255 Les gens l'ont consulté

How Can I Accurately Track Process Execution Time in .NET?

Suivi de l'exécution du processus avec des techniques .NET améliorées

L'utilisation simple de Process.GetProcessesByName n'offre qu'une vue momentanée des processus actifs ; c'est insuffisant pour suivre la durée d'exécution d'un processus sur plusieurs instances. Une solution plus robuste est nécessaire.

Exploiter WMI pour une surveillance précise des processus

Windows Management Instrumentation (WMI) fournit un mécanisme puissant pour la surveillance détaillée des événements du système, y compris les heures précises de début et de fin des processus. Le code C# suivant illustre l'application de WMI à cet effet :

<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>
Copier après la connexion

L'exécution de ce code avec les privilèges d'administrateur permet une surveillance en temps réel des événements du cycle de vie des processus. Cela fournit une mesure très précise du temps d’exécution de n’importe quel processus, sur plusieurs exécutions. Gardez à l’esprit qu’une surveillance intensive peut avoir un impact sur les performances du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal