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

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

楼主#
更多 发布于:2004-08-24 09:37

大家好!

  我用Vs.net作AO开发,程序运行完毕之后会出现两种不同的情况:

1)若在MapControl中加入了图层,会弹出内存错误的对话框;

2)若MapControl中没有加入任何图层,则无任何错误对话框出现.

  请问哪位碰到过此类问题,是什么原因造成的?如何解决?

  请指教,诚谢!

                         fisherssj@yahoo.com.cn

                         QQ:77521200

喜欢0 评分0
这个世界究竟是什么样子?
默认头像
路人甲
路人甲
  • 注册日期2004-05-19
  • 发帖数92
  • QQ
  • 铜币2526枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-08-24 11:20

是不是你在窗体closing的时候Release COM objects and shut down the AoInitilaize object?如下代码。

   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

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-06-29
  • 发帖数65
  • QQ
  • 铜币52枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-08-24 12:13
没有,我任何代码都没写.只是设计时在Mapcontrol中加入了图层.
这个世界究竟是什么样子?
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-05-19
  • 发帖数92
  • QQ
  • 铜币2526枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-08-24 17:33

我想那也需要对AO初始化吧,我初始化后,就一点问题没有了,代码如下。

#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

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

End sub

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-03-25
  • 发帖数341
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-08-24 17:44
不做初始化会有问题,是不能正常运行的。
签 名: 不能超过 250 个字符 文字将出现在您发表的文章的结尾处。
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-06-01
  • 发帖数25
  • QQ
  • 铜币258枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-08-24 20:59

你可以在运行时,再加入图层,就不会了!??

并在窗体的事件Closed中加入:

axMap.ClearLayers();

Process process = Process.CurrentProcess();

process.Kill();                      // Kill 当前进程

[此贴子已经被作者于2004-8-24 21:00:51编辑过]
我会努力的!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-06-29
  • 发帖数65
  • QQ
  • 铜币52枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-08-25 09:10
谢谢各位仁兄的指教,解决了!
这个世界究竟是什么样子?
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部