今天剛遇到的問題。
類的方法中,聲明瞭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),問題仍然存在。