Need help on time out loop after certain time.

  • Thread starter Thread starter joaotsetsemoita
  • Start date Start date
J

joaotsetsemoita

hello everyone.

Im trying to time out a loot after a certain time. Probably 5 to 10
minutes.

I have the following function

Private Sub processFileCreation(ByVal source As Object, ByVal e As
System.IO.FileSystemEventArgs)
Dim strFilename As String = "c:\web\example.mdb"
Do
Loop While System.IO.File.Exists(strFilename) And
isFileOpen(strFilename)
writeDatabase()

End Sub

This function is being called when it fires the event "created" of a
filewatcher. The file "example.mdb" is being FTPed to the folder. The
loop is to verify if the file is completed written on disk to avoid
exceptions. Is a big file that could take 5 minutes to FTP it that
why I need this loop. Im trying to avoid an infinite loop if some user
has the file open, or if the file is being used by any other software,
so I need to time out the loop.

I've tried to research the web how to use a timer to achieve this but
none of the examples I found could help, plus im kind newb on vb and
vb.net. Lets say this is my first more serious vb.net program :)

Any sugestions?? Any help would be highly appreciated.

Thanks in advance

Joao
 
hello everyone.

Im trying to time out a loot after a certain time. Probably 5 to 10
minutes.

I have the following function

Private Sub processFileCreation(ByVal source As Object, ByVal e As
System.IO.FileSystemEventArgs)
Dim strFilename As String = "c:\web\example.mdb"
Do
Loop While System.IO.File.Exists(strFilename) And
isFileOpen(strFilename)
writeDatabase()

End Sub

This function is being called when it fires the event "created" of a
filewatcher. The file "example.mdb" is being FTPed to the folder. The
loop is to verify if the file is completed written on disk to avoid
exceptions. Is a big file that could take 5 minutes to FTP it that
why I need this loop. Im trying to avoid an infinite loop if some user
has the file open, or if the file is being used by any other software,
so I need to time out the loop.

I've tried to research the web how to use a timer to achieve this but
none of the examples I found could help, plus im kind newb on vb and
vb.net. Lets say this is my first more serious vb.net program :)

Any sugestions?? Any help would be highly appreciated.

Thanks in advance

Joao

Probably the simplest way would be to execute the method that does the
loop in a seperate thread, and then use the Join method to wait for it
to finish or a timeout to expire.

Here's a sample console project demonstrating the process:

/////////////////////
Imports System.Threading

Module Module1

Sub Main()

Console.WriteLine("Starting thread...")

Dim t As New Thread(AddressOf DoTheWork)
t.Start()

Console.WriteLine("Thread starting successfully")

'// Do anything else you might need to do
'// while the thread is running
Console.WriteLine("Other work is being done...")

'// Block until thread completion or timeout (in milliseconds)
t.Join(2000)

'// Check to see if the timeout expired or
'// the thread finished
If t.IsAlive Then
Console.WriteLine("Timeout expired, aborting thread...")
'// Kill the thread
t.Abort()
Else
Console.WriteLine("Thread completed successfully")
End If

Console.Read()

End Sub

Public Sub DoTheWork()
Try
'// Create an infinite loop
While True
Console.WriteLine(" Thread is working...")
'// Pretend we are working
Thread.Sleep(250)
End While
Catch ex As ThreadAbortException
'// Do any cleanup here
Console.WriteLine("Thread Aborted")
End Try
End Sub

End Module
/////////////////////

Thanks,

Seth Rowe
 
hello everyone.

Im trying to time out a loot after a certain time. Probably 5 to 10
minutes.

I have the following function

Private Sub processFileCreation(ByVal source As Object, ByVal e As
System.IO.FileSystemEventArgs)
Dim strFilename As String = "c:\web\example.mdb"
Do
Loop While System.IO.File.Exists(strFilename) And
isFileOpen(strFilename)
writeDatabase()

End Sub

This function is being called when it fires the event "created" of a
filewatcher. The file "example.mdb" is being FTPed to the folder. The
loop is to verify if the file is completed written on disk to avoid
exceptions. Is a big file that could take 5 minutes to FTP it that
why I need this loop. Im trying to avoid an infinite loop if some user
has the file open, or if the file is being used by any other software,
so I need to time out the loop.

I've tried to research the web how to use a timer to achieve this but
none of the examples I found could help, plus im kind newb on vb and
vb.net. Lets say this is my first more serious vb.net program :)

Any sugestions?? Any help would be highly appreciated.

Thanks in advance

Joao

If you dont want to use a thread, maybe just create a timer, set it to
10 min or whatever on the interval, and do something like this
<code written in notepad>

dim strfilename as .....
dim myTimeOutTimer as new timer
myTimeOutTimer.Interval = 10000 '(Example Time - change it)
myTimeOutTimer.Enabled = True

do
<your code here>
loop while <all ur stuff> and myTimeOutTimer.Enabled = True


and in the timer event...just put myTimerOutTimer.Enabled = false.


fyi im a newbie.

M.
 
If you dont want to use a thread, maybe just create a timer, set it to
10 min or whatever on the interval, and do something like this
<code written in notepad>

dim strfilename as .....
dim myTimeOutTimer as new timer
myTimeOutTimer.Interval = 10000 '(Example Time - change it)
myTimeOutTimer.Enabled = True

do
<your code here>
loop while <all ur stuff> and myTimeOutTimer.Enabled = True

and in the timer event...just put myTimerOutTimer.Enabled = false.

fyi im a newbie.

M.- Hide quoted text -

- Show quoted text -

I would like to thank to both of you who posted messages to help me.

I follow Seth's sugestion and fitted perfectly for what I wanted. Just
finished now my first windows service.

thanks once again

Joao
 
I would like to thank to both of you who posted messages to help me.

I follow Seth's sugestion and fitted perfectly for what I wanted. Just
finished now my first windows service.

thanks once again

Joao


Seth has been using vb waaaay longer than me. Take his examples over
mine anyday!

cheers'

M.
 
Back
Top