"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحديد آخر وقت تنفيذ لعملية توقف في .NET؟

كيفية تحديد آخر وقت تنفيذ لعملية توقف في .NET؟

نشر في 2025-04-22
تصفح:774

How Can I Determine the Last Execution Time of a Stopped Process in .NET?

تتبع الوقت الأخير للتشغيل لعملية .NET التي تم إنهاءها

. ومع ذلك ، فهي قصيرة عند محاولة تحديد آخر وقت تنفيذ لعملية انتهت بالفعل. WMI: الحل

يتم معالجة هذا التحدي بفعالية باستخدام Windows Management Instrumentation (WMI). يسمح WMI بأحداث بدء عملية الرصد وإيقافها. إليك تطبيق عملي:

باستخدام النظام ؛ باستخدام System.Management ؛ الطبقة العامة ProcessMonitor { الفراغ الثابت العام (سلسلة [] args) { // مشاهدة العملية تبدأ باستخدام (var startwatch = new ManagementEventWatcher (wqleventquery جديد ("حدد * من Win32_ProcessStartTrace")))))))))))))))))))))) { startWatch.EventArdrived = startWatch_eventArdved ؛ StartWatch.start () ؛ // شاهد توقف العملية باستخدام (var stopwatch = new ManagementEventWatcher (wqleventquery جديد ("SELECT * من Win32_ProcessStopTrace"))))))))))))))))))))) { توقيت. توقيت. ستارت () ؛ Console.Writeline ("نشاط عملية المراقبة. اضغط على أي مفتاح للخروج.") ؛ console.ReadKey () ؛ } StartWatch.stop () ؛ } } private static void foldwatch_eventarrived (مرسل الكائن ، eventArrevedeventArgs e) { console.writeline ($ "توقفت العملية: { } private static void startwatch_eventarrived (مرسل الكائن ، eventArrevedeventArgs e) { console.writeline ($ "بدأت العملية: { } }
using System;
using System.Management;

public class ProcessMonitor
{
    public static void Main(string[] args)
    {
        // Watch for process starts
        using (var startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")))
        {
            startWatch.EventArrived  = StartWatch_EventArrived;
            startWatch.Start();

            // Watch for process stops
            using (var stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")))
            {
                stopWatch.EventArrived  = StopWatch_EventArrived;
                stopWatch.Start();

                Console.WriteLine("Monitoring process activity. Press any key to exit.");
                Console.ReadKey();
            }
            startWatch.Stop();
        }
    }

    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}");
    }
}

لمراقبة أحداث العملية بشكل فعال ، يتطلب هذا التطبيق امتيازات مرتفعة. اضبط بيان التطبيق وفقًا لذلك.

كيفية استخدام

قم بتشغيل البرنامج. سوف تراقب بشكل مستمر بدء العملية وتتوقف ، مع عرض اسم العملية في كل مرة. اضغط على أي مفتاح لإنهاء المراقبة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3