Differences

This shows you the differences between the selected revisions of the page.

2012-03-21 2012-03-21
calling dispose (martin) guaranteed call to session.dispose from vbscript (martin)
Line 105: Line 105:
</code> </code>
-If you do not want to test for errors after every statement, you need to group the staments you want to guard into a subprocedure and enable custom error handling before calling/entering the subprocedure: +If you do not want to test for errors after every statement, you need to group the staments you want to guard into a subprocedure and enable custom error handling before calling/entering the subprocedure
 + 
 +This approach is also recommended to ensure that ''[[library_session_dispose|Session.Dispose]]'' is called even in case of error.
<code vb> <code vb>
-Sub ListDirectory+Sub ListDirectory(ByRef session) 
 +    ' Setup session options
    ...     ...
 +
 +    ' Connect
    session.Open sessionOptions     session.Open sessionOptions
    Dim directoryInfo     Dim directoryInfo
    Set directoryInfo = session.ListDirectory("/home/user/")     Set directoryInfo = session.ListDirectory("/home/user/")
 +
 +    ' Do some stuff with directory listing
    ...     ...
End Sub End Sub
 +
 +Dim session
 +Set session = WScript.CreateObject("WinSCP.Session")
' Enable custom error handling ' Enable custom error handling
Line 122: Line 132:
' Now, with custom error handling enabled before calling the ListDirectory subprocedure, ' Now, with custom error handling enabled before calling the ListDirectory subprocedure,
' any statement in the subprocedure terminates the subprocedure (but not the whole script) ' any statement in the subprocedure terminates the subprocedure (but not the whole script)
-ListDirectory+ListDirectory session
' Query for errors ' Query for errors
If Err.Number <> 0 Then If Err.Number <> 0 Then
    WScript.Echo "Listing directory failed: " & Err.Description     WScript.Echo "Listing directory failed: " & Err.Description
 +
 +    ' Disconnect, clean up
 +    session.Dispose
 +
    WScript.Quit 1     WScript.Quit 1
End If End If
Line 132: Line 146:
' Clear the error ' Clear the error
Err.Clear Err.Clear
 +
 +' Disconnect, clean up
 +session.Dispose
' Restore default error handling ' Restore default error handling
On Error GoTo 0 On Error GoTo 0
 +
 +' Now with session cleanly closed, safely do anything unrelated to WinSCP session
 +...
</code> </code>

Last modified: by martin