Thread.Interrupt() Doesn't Interrupt A Thread That Is In A Sleeping State?Aug 18, 2009
Microsoft's System.io.file.exists and System.io.directory.exists can take FOREVER, especially if you're in a situation, where you've unplugged from the network and you're looking in a share.
So, to get around this, I've created a thread that times out after 3 seconds. Returning false, if the calls above haven't yet returned. To do this, my main thread passes its instance to the new thread and immediately calls:
Thread.Sleep(TimeOutInSeconds * 1000) ' Where TimeOUtInSeconds = 3
The new thread then goes and checks for the file / folder using the System.io.file.exists / System.io.directory.exists functions.
Regardless of the result, then it uses the main thread's reference to call Thread.Interrupt().
My main thread doesn't get interrupted. It stays there for the full 3 seconds. If I were to change that to 3 minutes ( and I have ), it'll sleep for 3 minutes.