UserControl - Vorsicht im Konstruktor

UserControl - Vorsicht im Konstruktor

Wenn ihr eine Windows Forms Anwendung erstellt, werdet ihr früher oder später an einem Punkt gelangen, an dem ihr eigene UserControls schreibt.
Nun denkt man sich natürlich nix dabei seine ganze Logik wie gewohnt im Konstruktor zu starten um beispielsweise Events zu abbonieren oder in meinem Fall für ein XNA-Control die Schleife zum rendern einzurichten.
Bei der Entwicklung ist mir dann aufgefallen, dass mein Visual Studio immer wieder bei hoher CPU-Last liegt und gewisse Features im Editor nicht mehr funktioniert haben.

Nach kurzer Recherche im Internet bin ich dann auf folgenden Link gestoßen:
http://stackoverflow.com

Dort wird beschrieben, wie man feststellen kann, ob das Control sich im Designer Modus befindet, also von Visual Studio Designer angezeigt wird, oder wirklich normal aufgeführt wird.

Dabei hat jedes Control die Eigenschaft DesignMode.
Das fatale daran ist jedoch, dass diese Eigenschaft im Konstruktor noch nicht gesetzt ist, da der Visual Studio Designer zu diesem Zeitpunkt diese Eigenschaft noch nicht gesetzt hat.

Wenn wir nun folgendes Code-Beispiel nehmen:
if (!DesignMode)
    m_xnaForms = new XnaForms(this.Handle, this.Width, this.Height);
    m_xnaForms.Content.RootDirectory = "Content";

    m_clock = new GameClock();

    m_spriteBatch = new SpriteBatch(m_xnaForms.Device);

    Application.Idle += Application_Idle;
}

Wird dieses ohne weiteres im Konstruktor ausgeführt und was daraus resultiert, sollte klar sein.
Das Idle-Event der Anwendung wird abonniert und normal ausgeführt. Da ich jedoch darin nun die Render-Schleife für meinen Bildschirm habe, läuft die CPU-Last hoch und mein Studio fängt an gewisse Dienste zu verweigern.
Darum verlagert solche Dinge am besten in das Load-Event der Controls, da dort die Eigenschaft DesignMode bereits gesetzt ist.
Um einen Kommentar zu hinterlassen, ist eine Anmeldung erforderlich.