.NET 4.0 - AccessViolationException und WndProc

Ich habe diesen Codeausschnitt:

internal class MTool : NativeWindow
{
    private const int WM_LBUTTONDOWN = 0x0201;
    public event TipDeactivateEventHandler Deactivate;

    protected override void WndProc(ref System.Windows.Forms.Message m)
    {           
        if( m.Msg == WM_LBUTTONDOWN )
        {
            if( this.Deactivate != null)
            {
                this.Deactivate();
            }
        }

        base.WndProc(ref m);
    }
}

Wenn ich mein Programm ausführe, wird in der Zeile ein AccessViolationException-Fehler angezeigtbase.WndProc(ref m); und ich weiß nicht warum.

Anscheinend wurde dies von .NET 2.0 auf 4.0 portiert und meine Theorie ist, dass es möglicherweise eine alternative Methode gibt, die jetzt anstelle des Überschreibens von WndProc verwendet wird. Ist das der Fall? Wenn nicht, warum erhalte ich diese Ausnahme?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage