我在.NET 1.1 C#Windows窗体应用程序中间歇性地出错。有人表示这是由于1.1框架中的错误,并建议将以下代码放入任何自定义控件中。
protected override void OnParentChanged(EventArgs e)
{
if (this.Parent != null)
{
this.CreateParams.Parent = this.Parent.Handle;
this.RecreateHandle();
}
base.OnParentChanged(e);
}
有没有人发现这解决了他们的问题?任何人都可以提供一种方法来一致地重现错误,所以我可以在应用更改后验证它是否已修复?
如果有替代解决方案,我也会对此持开放态度。
答案 0 :(得分:1)
从标题看来,您的代码似乎正在尝试访问已经处置的对象。如果您尝试访问托管引用字段,则可能会在终结器中发生这种情况。 CLR最终确定托管对象的顺序是不确定的。
答案 1 :(得分:0)
嘿,我不确定你的问题,因为我已经很久没用过.NET 1.1了, 而且我讨厌明白这一点......但是什么阻止你迁移 到.NET 2.0甚至3.5? (请不要觉得被冒犯,我实际上有兴趣知道)。
我可以理解.NET 3.5在某些情况下可能会早, 但是,鉴于大多数用户拥有它,.NET 2.0应该是一个安全的赌注 通过Windows更新或者如果他们使用Vista,他们默认使用它。