我正在创建一个监控计算机使用情况的程序。该程序的一部分要求我始终知道前景窗口是什么。这是通过以下代码实现的:
// Returns the name of the process owning the foreground window.
private static Process GetForegroundProcess()
{
try
{
IntPtr hwnd = GetForegroundWindow();
// The foreground window can be NULL in certain circumstances,
// such as when a window is losing activation.
uint pid;
GetWindowThreadProcessId(hwnd, out pid);
Process p = Process.GetProcessById((int)pid);
return p;
}
catch (Exception)
{
return null;
}
}
我遇到的问题是CPU消耗。这逐渐使用我的所有CPU,因为它在每秒钟滴答的代码中被调用。对于程序中的核心功能,每秒钟都需要滴答作响。
我的问题是,如果没有我的程序冻结计算机,有没有办法解决这个问题?
感谢您的时间和回复!
答案 0 :(得分:0)
代码运行时禁用计时器!如果它比计时器慢,它会锁定你的系统。 在后台线程上执行代码,看看是否有不同的API来获得更好的相同信息。