fisherssj
路人甲
路人甲
  • 注册日期2004-06-29
  • 发帖数65
  • QQ
  • 铜币52枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1955回复:6

Vs.net+AO程序运行完毕出现内存问题?

楼主#
更多 发布于:2004-08-24 09:37
<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>

喜欢0 评分0
这个世界究竟是什么样子?
rcads
路人甲
路人甲
  • 注册日期2004-05-19
  • 发帖数92
  • QQ
  • 铜币2526枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于: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>
举报 回复(0) 喜欢(0)     评分
fisherssj
路人甲
路人甲
  • 注册日期2004-06-29
  • 发帖数65
  • QQ
  • 铜币52枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-08-24 12:13
没有,我任何代码都没写.只是设计时在Mapcontrol中加入了图层.
这个世界究竟是什么样子?
举报 回复(0) 喜欢(0)     评分
rcads
路人甲
路人甲
  • 注册日期2004-05-19
  • 发帖数92
  • QQ
  • 铜币2526枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于: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>
举报 回复(0) 喜欢(0)     评分
destnity
路人甲
路人甲
  • 注册日期2004-03-25
  • 发帖数341
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-08-24 17:44
不做初始化会有问题,是不能正常运行的。
签 名: 不能超过 250 个字符 文字将出现在您发表的文章的结尾处。
举报 回复(0) 喜欢(0)     评分
ch1219553
路人甲
路人甲
  • 注册日期2004-06-01
  • 发帖数25
  • QQ
  • 铜币258枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于: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编辑过]
我会努力的!
举报 回复(0) 喜欢(0)     评分
fisherssj
路人甲
路人甲
  • 注册日期2004-06-29
  • 发帖数65
  • QQ
  • 铜币52枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-08-25 09:10
谢谢各位仁兄的指教,解决了!<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em04.gif" />
这个世界究竟是什么样子?
举报 回复(0) 喜欢(0)     评分
游客

返回顶部