长时间运行的服务列表C#
如何获取当前计算机上长期运行的服务列表 我可以列出所有进程,但如何添加到筛选长时间运行的进程长时间运行的服务列表C#,c#,C#,如何获取当前计算机上长期运行的服务列表 我可以列出所有进程,但如何添加到筛选长时间运行的进程 private void ListProcesses() { Process[] processCollection = Process.GetProcesses(); foreach (Process p in processCollection) { Console.WriteLine(p.ProcessName); } }
private void ListProcesses()
{
Process[] processCollection = Process.GetProcesses();
foreach (Process p in processCollection)
{
Console.WriteLine(p.ProcessName);
}
}
Process类具有datetime属性Process.StartTime,该属性获取关联进程启动的时间。
您可以使用它来确定哪些进程的运行时间更长。Process类有一个datetime属性Process.StartTime,该属性获取关联进程的启动时间。 你可以用它来找出哪些能跑更长时间 我可以列出所有进程,但如何添加到筛选长时间运行的进程
private void ListProcesses()
{
Process[] processCollection = Process.GetProcesses();
foreach (Process p in processCollection)
{
Console.WriteLine(p.ProcessName);
}
}
类似于(假设您要的是墙时间):
您还可以使用其他属性,例如,它将为您提供进程实际使用处理器的总时间(相对于休眠),这在某些情况下可能更有趣
如果您确实想要服务,而不是流程,那么有一种不同的方法来获得这些服务。然而,为了让服务得到使用,我不认为有一种方法可以在服务开始时获得
我可以列出所有进程,但如何添加到筛选长时间运行的进程
private void ListProcesses()
{
Process[] processCollection = Process.GetProcesses();
foreach (Process p in processCollection)
{
Console.WriteLine(p.ProcessName);
}
}
类似于(假设您要的是墙时间):
您还可以使用其他属性,例如,它将为您提供进程实际使用处理器的总时间(相对于休眠),这在某些情况下可能更有趣
如果您确实想要服务,而不是流程,那么有一种不同的方法来获得这些服务。然而,要使用服务,我认为没有办法在服务启动时就开始使用。仅用于运行服务,我们必须使用ServiceController和ManagementObject。以下是我的“长时间”运行服务代码:
static public void Main()
{
TimeSpan Interval = new TimeSpan(5,0,10); // as exemple
var scServices= ServiceController.GetServices();
foreach (ServiceController scTemp in scServices)
{
if (scTemp.Status == ServiceControllerStatus.Running)
{
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + scTemp.ServiceName + "'");
wmiService.Get();
var id = Convert.ToInt32(wmiService.Properties["ProcessId"].Value);
Process p = Process.GetProcessById(id);
if ((DateTime.Now.Subtract(p.StartTime)) > Interval)
{
Console.WriteLine(" Service : {0}", scTemp.ServiceName);
Console.WriteLine(" Display name: {0}", scTemp.DisplayName);
Console.WriteLine(" StartTime: {0}", p.StartTime);
}
}
}
Console.ReadLine();
}
仅对于运行服务,我们必须使用ServiceController和ManagementObject。以下是我的“长时间”运行服务代码:
static public void Main()
{
TimeSpan Interval = new TimeSpan(5,0,10); // as exemple
var scServices= ServiceController.GetServices();
foreach (ServiceController scTemp in scServices)
{
if (scTemp.Status == ServiceControllerStatus.Running)
{
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + scTemp.ServiceName + "'");
wmiService.Get();
var id = Convert.ToInt32(wmiService.Properties["ProcessId"].Value);
Process p = Process.GetProcessById(id);
if ((DateTime.Now.Subtract(p.StartTime)) > Interval)
{
Console.WriteLine(" Service : {0}", scTemp.ServiceName);
Console.WriteLine(" Display name: {0}", scTemp.DisplayName);
Console.WriteLine(" StartTime: {0}", p.StartTime);
}
}
}
Console.ReadLine();
}
我认为您应该首先定义“长时间运行流程”long running=长时间运行?较早的?如果您谈论的是实际的墙时间,那么您可以使用每个进程
StartTime
来计算它们已经运行了多长时间,并过滤到高于您想要使用的阈值的时间。我认为您应该定义“长时间运行进程”firstLong running=长时间运行?较早的?如果您谈论的是实际的墙时间,那么您可以使用每个进程StartTime
来计算它们已经运行了多长时间,并过滤到高于您想要使用的阈值的进程。