.NET 4.0 - AccessViolationException和WndProc

Kyl*_* V. 8 .net c# windows exception-handling exception

我有这段代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,我在行中得到一个AccessViolationException错误,base.WndProc(ref m);我不知道为什么.

显然,这是从.NET 2.0移植到4.0,我的理论是现在可能有一种替代方法来代替覆盖WndProc.这种情况?如果不是为什么我得到这个例外?

Kyl*_* V. 7

我通过在方法上方添加此属性来修复它:

[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
Run Code Online (Sandbox Code Playgroud)

然后使用try/catch围绕发生异常的行.我在这里找到了这个信息.

  • 找出造成异常的原因并试图解决这个问题不是更好吗? (2认同)