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