默认头像
路人甲
路人甲
  • 注册日期2007-04-12
  • 发帖数2
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1607回复:0

SuperWorkSpace打开存放在oracle中的工作空间时引入的内存泄露问题

楼主#
更多 发布于:2008-07-22 21:18
最近使用SuperMap开发一个访问存放在Oracle中的工作空间的小例子时碰到了明显的内存泄漏问题。
程序的功能就是点击“打开”按钮时,打开工作空间,并打开该工作空间下的一个地图。
点击“关闭”按钮时,关闭地图,断开与WorkSpace的链接,并关闭工作空间。
碰到的问题就是当我循环的点击打开和关闭按钮时,通过任务管理器发现程序运行占用的内存明显的在不断增加。具体的说就是每次调用SuperWorkspace1.Open方法时内存增大,但调用.SuperWorkspace1.Close方法时,内存并不减少。由此,我推断是出现了内存泄露问题,但是我自己有找不出代码上有什么不合理的地方,所以想请大家帮我看看,看能不能找出问题的原因,谢谢大家了
代码如下:
Private Sub OpenWorkSpace()
   Dim strPassword As String
   Dim strFilePath As String
   Dim strDSStation As String
   strDSStation = "station01"
   strPassword = "uid=" ; strDSStation ; ";pwd=" ; strDSStation
   strFilePath = "Provider = MSDAORA;Driver= Oracle in Orahome92 ;SERVER =gispipe;Database = " ; strDSStation ; ";Caption = " ; strDSStation
   bResult = Me.SuperWorkspace1.Open(strFilePath, strPassword)
   If Not bResult Then
       MsgBox "打开数据失败", vbCritical, "提示"
   Else
       Me.SuperMap1.Connect Me.SuperWorkspace1.Handle
       Me.SuperMap1.OpenMap "stationback"
       Me.SuperMap1.Action = scaPan
        Me.SuperMap1.Refresh
   End If
End Sub

Private Sub Command1_Click()
   OpenWorkSpace
End Sub

Private Sub Command2_Click()
   CloseWorkSpace
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Me.SuperMap1.Close
   Me.SuperMap1.Disconnect
   Me.SuperWorkspace1.Close
End Sub

Private Sub CloseWorkSpace()
   Me.SuperMap1.Close
   Me.SuperMap1.Disconnect
   Me.SuperWorkspace1.Close
   Me.SuperMap1.Refresh
End Sub




喜欢0 评分0
默认头像

返回顶部