您好,登錄后才能下訂單哦!
在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)。
免責(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)容。