Implement time-out

L

Ludo

Hi,

I'm using following code witch work fine to select a file on a remote
PC, connected via network.
But there's one withdraw:
If the remote PC is too busy, or the network connection fails, there's
no time-out to escape from the routine.
Question now is if it's possible to implement a time-out so that i can
bail out of the routine, and if possible, how to do it.

frmSelectFMT_Log_Kast.Show
If blCancelSelect = False Then Exit Sub
With Application.FileDialog(msoFileDialogOpen)
If inHassKast = 1 Then
.InitialFileName = FMT_LogFiles1 'FMT LOG files kast
1 !!!
.Title = "FMT LOG files kast 1"
Else
.InitialFileName = FMT_LogFiles2 'FMT LOG files kast
2 !!!
.Title = "FMT LOG files kast 2"
End If
.AllowMultiSelect = False
.InitialView = msoFileDialogViewDetails
.Show
'<< hangs when network down or PC too busy to answer
If .SelectedItems.Count = 0 Then Exit Sub
FName = .SelectedItems(1)
End With

Any help is welcome.
Regards,
Ludo
 
G

GS

Ludo was thinking very hard :
Hi,

I'm using following code witch work fine to select a file on a remote
PC, connected via network.
But there's one withdraw:
If the remote PC is too busy, or the network connection fails, there's
no time-out to escape from the routine.
Question now is if it's possible to implement a time-out so that i can
bail out of the routine, and if possible, how to do it.

frmSelectFMT_Log_Kast.Show
If blCancelSelect = False Then Exit Sub
With Application.FileDialog(msoFileDialogOpen)
If inHassKast = 1 Then
.InitialFileName = FMT_LogFiles1 'FMT LOG files kast
1 !!!
.Title = "FMT LOG files kast 1"
Else
.InitialFileName = FMT_LogFiles2 'FMT LOG files kast
2 !!!
.Title = "FMT LOG files kast 2"
End If
.AllowMultiSelect = False
.InitialView = msoFileDialogViewDetails
.Show
'<< hangs when network down or PC too busy to answer
If .SelectedItems.Count = 0 Then Exit Sub
FName = .SelectedItems(1)
End With

Any help is welcome.
Regards,
Ludo

You couldcheck to see if the network drive is available beforehand
using the following function.

' PathExists()
' Checks if a path to a folder exists.
' Arguments: sPath The full path to search
' Returns: TRUE if sPath exists AND is available
Function PathExists(sPath As String) As Boolean
On Error Resume Next
' "\nul" appended to the path makes it work with empty folders
PathExists = (Dir$(sPath & "\nul") <> "")
End Function

To use it...

Sub DoStuff()
If PathExists("\\Server\Share") Then
'//do stuff
End If 'PathExists("\\Server\Share")
End Sub

...which only executes your code if the path exists AND is available.
 
G

GS

Optional usage...
Sub DoStuff()
If PathExists("\\Server\Share") Then
'//do stuff
Else
Dim sMsg As String
sMsg = "The network drive is not available." & vbCrLf
sMsg = sMsg & "Please try again later!"
MsgBox sMsg, vbExclamation
 
L

Ludo

Optional usage...


      Else
        Dim sMsg As String
        sMsg = "The network drive is not available." & vbCrLf
        sMsg = sMsg & "Please try again later!"
        MsgBox sMsg, vbExclamation



--
Garry

Free usenet access athttp://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc

Thanks Gary!

Just needed to change PathExists = '(Dir$(sPath & "\nul") <> "") into
PathExists = (Dir$(sPath & "\*.log") <> "") to get it working.
Otherwise it returned always FALSE.


Keep up the good work!

Regards,
Ludo
 
G

GS

Thanks Gary!

Just needed to change PathExists = '(Dir$(sPath & "\nul") <> "") into
PathExists = (Dir$(sPath & "\*.log") <> "") to get it working.
Otherwise it returned always FALSE.


Keep up the good work!

Regards,
Ludo

That means you're testing for files, NOT a path. In this case I suggest
you use the following function instead, leaving the PathExists function
unchanged.

' Checks if a file exists in the specified folder
' Arguments: fileName The fullname of the file
' Returns: TRUE if the file exists
Function bFileExists(Filename As String) As Boolean
On Error Resume Next
bFileExists = (Dir$(Filename) <> "")
' bFileExists = (FileLen(Filename) <> 0) '//optional method
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top