溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在C#中監(jiān)控多進(jìn)程狀態(tài)

發(fā)布時(shí)間:2024-09-13 16:04:41 來(lái)源:億速云 閱讀:79 作者:小樊 欄目:編程語(yǔ)言

在C#中,您可以使用System.Diagnostics.Process類來(lái)監(jiān)控多個(gè)進(jìn)程的狀態(tài)

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace ProcessMonitor
{
    class Program
    {
        static void Main(string[] args)
        {
            // 要監(jiān)控的進(jìn)程名稱列表
            List<string> processNames = new List<string> { "notepad", "calc" };

            // 獲取當(dāng)前正在運(yùn)行的所有進(jìn)程
            Process[] runningProcesses = Process.GetProcesses();

            // 查找要監(jiān)控的進(jìn)程
            List<Process> monitoredProcesses = new List<Process>();
            foreach (var process in runningProcesses)
            {
                if (processNames.Contains(process.ProcessName))
                {
                    monitoredProcesses.Add(process);
                }
            }

            Console.WriteLine("監(jiān)控中的進(jìn)程:");
            foreach (var process in monitoredProcesses)
            {
                Console.WriteLine($"{process.ProcessName} - {process.Id}");
            }

            // 監(jiān)控進(jìn)程狀態(tài)
            while (true)
            {
                Console.Clear();
                Console.WriteLine("監(jiān)控中的進(jìn)程:");

                foreach (var process in monitoredProcesses)
                {
                    try
                    {
                        // 刷新進(jìn)程信息
                        process.Refresh();

                        // 檢查進(jìn)程是否仍在運(yùn)行
                        if (!process.HasExited)
                        {
                            Console.WriteLine($"{process.ProcessName} - {process.Id} - 運(yùn)行中");
                        }
                        else
                        {
                            Console.WriteLine($"{process.ProcessName} - {process.Id} - 已退出");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"無(wú)法獲取進(jìn)程信息:{ex.Message}");
                    }
                }

                // 每隔1秒鐘刷新一次狀態(tài)
                System.Threading.Thread.Sleep(1000);
            }
        }
    }
}

這個(gè)示例首先創(chuàng)建一個(gè)要監(jiān)控的進(jìn)程名稱列表。然后,它獲取當(dāng)前正在運(yùn)行的所有進(jìn)程,并將要監(jiān)控的進(jìn)程添加到monitoredProcesses列表中。接下來(lái),它使用一個(gè)無(wú)限循環(huán)來(lái)監(jiān)控進(jìn)程狀態(tài)。在每次循環(huán)中,它會(huì)刷新進(jìn)程信息并檢查進(jìn)程是否仍在運(yùn)行。如果進(jìn)程已退出,它會(huì)輸出相應(yīng)的狀態(tài)。循環(huán)每隔1秒鐘刷新一次狀態(tài)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI