Program.cs的
namespace PerformanceMonitor
{
static class Program
{
private static int NumberOfCores;
private static List<int> CPULoadVals;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MonitorGUI());
NumberOfCores = getNumberOfCores();
CPULoadVals = getCoreLoadVals();
}
private static int getNumberOfCores()
{
int coreCount = 0;
foreach (var core in new ManagementObjectSearcher("SELECT * FROM Win32_Processor").Get())
{
coreCount += int.Parse(core["NumberOfCores"].ToString());
}
return coreCount;
}
...
MonitorGUI.cs
namespace PerformanceMonitor
{
public partial class MonitorGUI : Form
{
public static List<Label> labels;
private static List<int> CPULoadVals;
public MonitorGUI()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
...
}
调试应用程序我可以看到调用InitializeComponent()
导致创建一个新表单(Application.Run(new MonitorGUI());
)但是在此之后尝试单步执行并且不调用任何内容。即使我可以直观地看到它已加载
答案 0 :(得分:1)
开始在当前线程上运行标准的应用程序消息循环,并使指定的表单可见。
此方法阻止,仅在关闭作为参数传递的Form
时返回。因此,当您关闭主窗口时,将执行此后的所有调用。
您可能想要更改顺序:
[STAThread]
static void Main()
{
NumberOfCores = getNumberOfCores();
CPULoadVals = getCoreLoadVals();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MonitorGUI());
}
只有在您订阅Form1_Load()
的{{1}}事件时才会调用Load
:
Form
但这也可以在设计师中完成。检查您是否正确设置了此事件。