C# CPU 单独使用(子)winforms
C# CPU usage separate (child) winforms
我知道您可以获得单个进程的总 CPU 使用情况,如下所示,但我想知道是否完全有可能获得每个单独表单的 CPU 使用情况在应用程序中。
using (PerformanceCounter pCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName))
{
pCounter.NextValue();
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Process: {0}, CPU: {1}%", Process.GetCurrentProcess().ProcessName, pCounter.NextValue());
}
是否可以使用类似上面的代码来获取应用程序中各个表单的 CPU 用法,或者这种简单的方法是不可能的 - 或者结果工作量太大?
流程中执行的工作不限于在表单上执行工作。表单只是一个用户界面对象,您可以使用它来启动任意数量的线程和后台任务,这些都是流程的一部分。您可以创建数百个表单,然后什么都不做 - 进程 cpu 使用率基本上为零(除了奇怪的重绘)。另一方面,您可以创建一个表单来启动一个单独的线程,该线程在后台执行一些 CPU 密集型工作,并且 CPU 使用率会激增。但该用法不能直接归因于该表单。
我知道您可以获得单个进程的总 CPU 使用情况,如下所示,但我想知道是否完全有可能获得每个单独表单的 CPU 使用情况在应用程序中。
using (PerformanceCounter pCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName))
{
pCounter.NextValue();
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Process: {0}, CPU: {1}%", Process.GetCurrentProcess().ProcessName, pCounter.NextValue());
}
是否可以使用类似上面的代码来获取应用程序中各个表单的 CPU 用法,或者这种简单的方法是不可能的 - 或者结果工作量太大?
流程中执行的工作不限于在表单上执行工作。表单只是一个用户界面对象,您可以使用它来启动任意数量的线程和后台任务,这些都是流程的一部分。您可以创建数百个表单,然后什么都不做 - 进程 cpu 使用率基本上为零(除了奇怪的重绘)。另一方面,您可以创建一个表单来启动一个单独的线程,该线程在后台执行一些 CPU 密集型工作,并且 CPU 使用率会激增。但该用法不能直接归因于该表单。