Ich habe den folgenden Handler von WndProc in meinem Formular. Es sollte horizontal Bewegen der Form verhindern (so dass nur vertikal bewegen):WndProc Handler ist ineffizient
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (!ShowCaption && m.Msg == 0x216)
{ // Trap WM_MOVING
var rc = (RECT)Marshal.PtrToStructure(m.LParam, typeof(RECT));
int w = rc.right - rc.left;
rc.left = this.Left;
rc.right = rc.left + w;
Marshal.StructureToPtr(rc, m.LParam, false);
}
base.WndProc(ref m);
}
Es funktioniert aber, wenn der Benutzer bewegt die Form CPU-Auslastung steigt sehr deutlich. Was könnte in dieser Funktion so ineffizient sein und gibt es irgendwelche Möglichkeiten?
Hohe CPU-Auslastung ist nicht unbedingt eine schlechte Sache. Ist das eigentlich ein Problem, oder warum schaust du auf die CPU-Auslastung? http://blogs.msdn.com/b/oldnewthing/archive/2010/12/03/10097861.aspx –
Es ist wirklich ein Problem: Es verursacht andere Prozess hängen – SiberianGuy
Zuordnung ist auf dieser Website erforderlich. –