我想我很清楚VB中ByVal和ByRef之间的区别是什么,但我的问题是当我尝试将它与使用WithEvents声明的成员结合使用时.
Private Sub SafeCloseAndDeRefConnection(ByRef cnx As ADODB.Connection) On Error GoTo ErrH If Not cnx Is nothing Then If (cnx.State And adStateConnecting) = adStateConnecting Then cnx.Cancel End If If (cnx.State And adStateOpen) = adStateOpen Then cnx.Close End If Set cnx = nothing End If Exit Sub ErrH: Set cnx = nothing End Sub
Private WithEvents Connection As ADODB.Connection
SafeCloseAndDeRefConnection Connection
但在调用SafeCloseAndDeRefConnection之后,Connection变量未设置为nothing且仍具有其原始引用.
如果我删除WithEvents关键字,对SafeCloseAndDeRefConnection的调用按预期工作(但显然不能处理事件)
任何人都可以向我解释为什么会这样吗?
附:我找到了类似的question elsewhere,但解决方法在我的方案中不起作用.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。