By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,645 Members | 1,065 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,645 IT Pros & Developers. It's quick & easy.

Need help on time out loop after certain time.

P: n/a
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

Oct 4 '07 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On Oct 4, 7:33 am, joaotsetsemo...@gmail.com wrote:
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

Oct 4 '07 #2

P: n/a


jo*************@gmail.com wrote:
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 stuffand myTimeOutTimer.Enabled = True
and in the timer event...just put myTimerOutTimer.Enabled = false.
fyi im a newbie.

M.
Oct 4 '07 #3

P: n/a
On Oct 4, 2:44 pm, Miro <miron...@beero.netwrote:
joaotsetsemo...@gmail.com wrote:
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 stuffand 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

Oct 4 '07 #4

P: n/a
jo*************@gmail.com wrote:
On Oct 4, 2:44 pm, Miro <miron...@beero.netwrote:
>joaotsetsemo...@gmail.com wrote:
>>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 stuffand 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

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

cheers'

M.
Oct 4 '07 #5

This discussion thread is closed

Replies have been disabled for this discussion.