I have this code snippet:
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);
}
}
When I run my program I get an AccessViolationException error at the line base.WndProc(ref m);
and I don't know why.
Apparently this was ported over from .NET 2.0 to 4.0 and my theory is that there may be an alternate method used now in place of overriding WndProc. Is this case? If not why am I getting this exception?
I fixed it by adding this attribute above the method:
Then surrounding the line where the exception occurs with a try/catch. I found this information here.
I suspect there's something larger happening in your code. Based on your snippet, I would try:
If these aren't practical to try, you probably need to update the snippet to explain better what you're trying to do.
The documentation for
WndProc
shows demanding full-trust. have you tried that? e.g.: