我有一个遗留的vb6应用程序在退出时崩溃 - 无论是作为可执行文件还是在IDE中。我怎样才能避免碰撞?退出VB 6崩溃
- 我目前卸载形式(除了frmmain)在
form_unload
,释放所有的ADODB记录集,将所有的boundcollections =什么都没有。 - 我试图在
form_terminate
事件中发现SetErrorMode SEM_NOGPFAULTERRORBOX
,但这并未阻止发生错误。 - 我也检查了在我的代码中实例化的子类,发现没有。
- 我检查了使用的外部组件 - 它们是ComponentOne FlexGrid 8拼写8和ComponentOne sizer控件。广泛的网络和论坛搜索没有发现任何类似于我的这些控件的已知问题。
如果我在实际做任何事情之前关闭程序,似乎不会出现此问题。然而,加载绑定控件似乎是靠近问题根源的地方,尽管重复地使用调试器,似乎问题的开始“移动”了。编程式退出,“X”和IDE“结束”控制出现问题 错误消息是 The instruction at "0x77d042b8" referenced memory at "0x055c9028". The memory could not be "Read"
。在错误框的标题是从我的应用程序 内的工具提示(在不同的时间不同)逐步执行代码时,我已经把游 - 在Form_Unload事件上退出子线的应用程序崩溃
ADDED
我意识到,我应该包括一些其他信息与我原来的职位。当我做到这一点时,我非常疲倦和沮丧,对不起,这很难阅读。 1)我确实安装了最新的服务包(6),并且组件的最新版本为
2)在我的VS2010 IDE(它位于同一台服务器上)中进行调试时,我得到了很长的时间以OLEAUT32.dll开头的堆栈转储,我更新了该DLL,但没有发现变化
3)我实际上是通过远程桌面连接运行(并正在运行)该程序。该程序在我的桌面以及用户终端服务器连接上崩溃。
4)我下运行的操作系统是Windows Server 2003的
5)我运行的代码是
Private Sub Form_Unload(Cancel As Integer)
Set rsChild = Nothing
Set rsCaseFile = Nothing
' many similar record sets closing
ys.CloseConnection
Set ys = Nothing
UnloadAllForms (Me.Name)
' closeing bound collections
Set bndChild = Nothing
Set bndAuth = Nothing
' more bound collections closed
' i had added the next two lines but it made no difference
frmmain.close
Set frmMain = nothing
getout
end sub
Public Sub UnloadAllForms(Optional FormToIgnore As String = "")
Dim f As Form
For Each f In Forms
If Not f Is Nothing Then
If f.Name <> FormToIgnore Then
Unload f
Set f = Nothing
End If
End If
Next f
End Sub
'\code'
6)我已经加入的“getout”例行“代码”的启动希望模块能够让表单对象干净地关闭这并没有解决问题
非常感谢大家的帮助
你可以发布你关闭时运行的代码吗? – jac 2011-06-15 20:09:00
哇,这是一个段落中的大量密集文本供人阅读和理解免费...在格式化文本可读的一些努力可能是为了 – 2011-06-15 20:15:03
@ p.campbell问题是在那里的第一个句子“我的vb6应用程序在退出时崩溃 - 既作为可执行文件又作为IDE使用。”这意味着“我怎样才能避免崩溃”! @Jarrod这是一个措词良好的问题,只需要一些格式。我会编辑它。如果你自己编辑它,将来它可能对noobie更友好? @关闭选民和downvoters。没有冒犯,但**你怎么了**?这是一个明确的问题。这很长,但那是因为IronHead在研究这个问题上做了很好的工作。这不是“太本地化”。对问题+1,我将投票重新打开,如果它关闭。 – MarkJ 2011-06-16 11:58:04