我有這樣的代碼片段:.NET 4.0 - AccessViolationException和WndProc的
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的現在使用的替代方法。這種情況?如果不是,我爲什麼會得到這個異常?
你能提供一個更完整的樣本嗎?至少要說明你如何創建MTool窗口並顯示它?我想確保我的repro接近你的。 – Tim 2012-08-20 17:29:19
所以你實際上並沒有展示它的任何特定的地方,只是創建對象?你不需要爲NativeWindow調用CreateHandle之類的東西嗎? – Tim 2012-08-20 19:10:24
你試過穿上base.WndProc斷點,看到的是,當引發異常的m的值...也做它曾經爲幾μm工作或它拋出異常的第一次調用.. – 2012-08-24 10:21:57