今天刚遇到的问题。
类的方法中,声明了NotesSession。方法结束时Delete Session会造成引用该类的代理中Session的丢失。该Session为全局变量。示例代码如下。
Agent TestAgent
Option
Public
Use " TestClass "
Dim s As NotesSession
Sub Initialize
Set s = New NotesSession
Msgbox " TestAgent: " & s.EffectiveUserName
Dim t As New TestSession
Call t.destorySession
Delete t
Msgbox " TestAgent: " & s.EffectiveUserName ' 运行到这里会出错,Session已丢失
End Sub
Use " TestClass "
Dim s As NotesSession
Sub Initialize
Set s = New NotesSession
Msgbox " TestAgent: " & s.EffectiveUserName
Dim t As New TestSession
Call t.destorySession
Delete t
Msgbox " TestAgent: " & s.EffectiveUserName ' 运行到这里会出错,Session已丢失
End Sub
Script库 TestClass
Option
Public
Class TestSession
Sub destorySession
Dim s As New NotesSession
Msgbox " TestSession: " & s.EffectiveUserName
Delete s ' 去掉就没有问题了
End Sub
End Class
Class TestSession
Sub destorySession
Dim s As New NotesSession
Msgbox " TestSession: " & s.EffectiveUserName
Delete s ' 去掉就没有问题了
End Sub
End Class
去掉Delete s或者改为Call s.close后问题解决。
该问题与变量声明无关。即使代理和类中的两个session声明为不同变量名称(如分别为s和ss),问题仍然存在。