2016-06-07 5 views
0

Program.csC# app nicht über Initialisierung läuft

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) 
     { 
      ... 
     } 

die App Debuggen kann ich sehen, dass InitializeComponent() aufgerufen wird, eine neue Form verursacht geschaffen werden (Application.Run(new MonitorGUI());), aber danach versucht, durchzukommen, und nichts wird aufgerufen. Das Verfahren auf dem Formular Last nicht sogar obwohl ich sehen kann visuell genannt, dass es

geladen
+2

Weisen Sie einer der Listen im 'Load'-Event zu? Wurden sie initialisiert? –

+3

Haben Sie ein Load-Ereignis wie dieses hier verkabelt.Load + = new System.EventHandler (this.Form1_Load) ;? – riteshmeher

+0

Weder Liste wurde initialisiert und ich habe keine Ereignisse – wmash

Antwort

1

Application.Run()

beginnt eine Standardanwendung Meldungsschleife auf dem aktuellen Thread ausgeführt wird, und macht die spezifizierte Form sichtbar.

Diese Methode Blöcke und nur zurück, wenn Sie die Form als Argument übergeben schließen. Alle Aufrufe danach werden ausgeführt, wenn Sie Ihr Hauptfenster schließen.

Vielleicht möchten Sie die Reihenfolge ändern:

[STAThread] 
static void Main() 
{ 
    NumberOfCores = getNumberOfCores(); 
    CPULoadVals = getCoreLoadVals(); 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new MonitorGUI()); 
} 

Und Form1_Load() ist nur, wenn Sie auf das Load Ereignis des Form abonniert genannt:

public MonitorGUI() 
{ 
    InitializeComponent(); 
    Load += Form1_Load; // <--- subscribe to the event 
} 

Dies kann aber auch sein, im Designer gemacht. Überprüfen Sie, ob Sie dieses Ereignis korrekt eingestellt haben.

+0

Vielen Dank !! Das hat den Trick gemacht. Werde annehmen wenn ich kann :) – wmash