阅读:2159回复:6
Vs.net+AO程序运行完毕出现内存问题?
<P>大家好!</P>
<P> 我用Vs.net作AO开发,程序运行完毕之后会出现两种不同的情况:</P> <P>1)若在MapControl中加入了图层,会弹出内存错误的对话框;</P> <P>2)若MapControl中没有加入任何图层,则无任何错误对话框出现.</P> <P> 请问哪位碰到过此类问题,是什么原因造成的?如何解决?</P> <P> 请指教,诚谢!</P> <P> <a href="mailtfisherssj@yahoo.com.cn" target="_blank" >fisherssj@yahoo.com.cn</A></P> <P> QQ:77521200</P> |
|
|
1楼#
发布于:2004-08-25 09:10
谢谢各位仁兄的指教,解决了!<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em04.gif" />
|
|
|
2楼#
发布于:2004-08-24 20:59
<P>你可以在运行时,再加入图层,就不会了!??</P>
<P>并在窗体的事件Closed中加入:</P> <P>axMap.ClearLayers();</P> <P>Process process = Process.CurrentProcess();</P> <P>process.Kill(); // Kill 当前进程</P> [此贴子已经被作者于2004-8-24 21:00:51编辑过]
|
|
|
3楼#
发布于:2004-08-24 17:44
不做初始化会有问题,是不能正常运行的。
|
|
|
4楼#
发布于:2004-08-24 17:33
<P>我想那也需要对AO初始化吧,我初始化后,就一点问题没有了,代码如下。</P><P>#Region " 初始化ArcGIS Enine"
Private Function InitializeArcEngine() As Boolean 'Create a new AoInitialize object m_pAoInitialize = New AoInitialize If m_pAoInitialize Is Nothing Then MsgBox("Unable to initialize. This application cannot run!") InitializeArcEngine = False End If 'Determine if the product is available If m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine) = esriLicenseStatus.esriLicenseAvailable Then If m_pAoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine) <> esriLicenseStatus.esriLicenseCheckedOut Then MsgBox("The initialization failed. This application cannot run!") InitializeArcEngine = False End If Else MsgBox("The ArcGIS Engine product is unavailable. This application cannot run!") InitializeArcEngine = False End If InitializeArcEngine = True End Function #End Region</P><P>Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If (InitializeArcEngine() = False) Then Me.Close() Exit Sub End If</P><P>End sub</P> |
|
5楼#
发布于:2004-08-24 12:13
没有,我任何代码都没写.只是设计时在Mapcontrol中加入了图层.
|
|
|
6楼#
发布于:2004-08-24 11:20
<P>是不是你在窗体closing的时候Release COM objects and shut down the AoInitilaize object?如下代码。</P><P> Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'Release COM objects and shut down the AoInitilaize object ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown() m_pAoInitialize.Shutdown() End Sub</P> |
|