根据您可以在网上找到的指南(例如来自 rick strahls 博客),我们为 foxpro(9 和 SP)创建了一个 .net (3.5) COM 控件
现在有时在 foxpro 中,我们在释放对象时会得到 C000005。
所以我们试图重现这个场景。当实例化和释放对象一百/千次时,我们得到了同样的错误。
我们使用一个空的 FoxPro SCX 表单和一个没有任何代码的简单 .net 按钮。
如果我们不处理 .net 对象,我们会得到一个类似的 .net 异常“尝试读取或写入受保护的内存”
“。(完整的例外见底部)
这里是 VFP 代码:
Local lnAnzahl as Number, ;
lni as Number
set procedure to DummyProcedure.prg
lnAnzahl = val(inputbox("wie oft", "oft","0"))
for lni = 1 to lnAnzahl
thisform.newobject("cntTest","netcontrol","c0005nativetest.vcx")
thisform.RemoveObject("cntTest")
endfor
.net 错误消息
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben。Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist。在 System.Runtime.InteropServices.ComTypes.IAdviseSink.OnViewChange(Int32 aspect, Int32 index) 在 System.Windows.Forms.Control.ActiveXImpl.ViewChanged() 在 System.Windows.Forms.Control.ActiveXImpl.ViewChangedInternal() 在 System. Windows.Forms.Control.OnInvalidated(InvalidateEventArgs e)
北 System.Windows.Forms.Control.NotifyInvalidate(矩形 invalidatedArea) 北 System.Windows.Forms.Control.Invalidate(Boolean invalidateChildren)
北 System.Windows.Forms.Control.WmUpdateUIState(Message& m) 北 System.Windows.Forms.Control.WndProc(Message& m) 北 System.Windows.Forms.ScrollableControl.WndProc(Message& m) 北 System.Windows.Forms.ContainerControl .WndProc(Message& m) 在 System.Windows.Forms.UserControl.WndProc(Message& m) 后面是 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ActiveXImpl.System.Windows 后面.Forms.IWindowTarget.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
这是一个已知问题吗?任何建议我们如何解决它?