我有以下代码片段:
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);
}
}
当我运行程序时,在
base.WndProc(ref m);
行收到AccessViolationException错误,我不知道为什么。显然,这是从.NET 2.0移植到4.0的,我的理论是,现在可能有替代覆盖WndProc的替代方法。是这种情况吗?如果不是,我为什么会得到这个异常(exception)?
最佳答案
我通过在方法上方添加此属性来解决此问题:
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
然后用try/catch包围发生异常的行。我发现此信息here。
关于c# - .NET 4.0-AccessViolationException和WndProc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12010296/