shiner
作者shiner·2012-08-08 16:29
产品经理·中信网络科技

domino函数生命周期

字数 785阅读 1495评论 1赞 3
最近比较忙,没时间写日志,现在忙里偷闲赶快赶一篇.
代理内创建函数传递对象都有生命周期.
如下代码:
Sub Initialize
Dim docTest As NotesDocument
'Set session = New NotesSession
Set docTest = getDoc("test")
MsgBox "函数外:"
MsgBox docTest Is nothing
End Sub
Function getDoc(test As String)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Set db = session.Getdatabase("", "dev/devtest.nsf") //非当前数据库
Set view = db.Getview("vwtest")
Set doc = view.Getdocumentbykey("dev", True)
MsgBox "函数内:"
MsgBox doc Is Nothing
Set getDoc = doc
End Function
后台打印出来的结果是:
函数内
false
函数外
true
以上代码是就是通过函数内的getdocumentbykey查找一个文档,然后函数内显示为false,返回到函数外就是对象就为空了,如果把取得的数据库换成当前数据库,返回的结果就是两个文档都没问题,
原因如下,在函数内,文档会随着视图或者数据库而销毁,如果依然想取到其他数据库的文档时,必须在函数内传入相应的视图或者表单即可, 这就是函数的垃圾回收机制,session和当前数据库对象是不会被销毁的,所以在以上事例中,取得当前数据库会没有问题.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论1 条评论

gengyabin2011gengyabin2011软件开发工程师物美商业集团
2013-03-04 14:29
不看结果还真不知道,居然有如此神奇的事情?? 学习了!
Ctrl+Enter 发表

相关问题

相关资料

X社区推广