Search code examples
c#exceptiontimeoutnetwork-drive

check if network drive exists with timeout in c#


i created a windows service that move files around between the server's hard drive (where the service is installed) to the network drive mapped in the server. one of the problems I encountered while creating a solution was network problems.

how do i check if a network drive exists while setting a timeout in checking it? If it times out, I catch the exception and retry in X number of minutes and leave items in queue.

thanks!


Solution

  • Put the call in a seperate thread and close the thread after a certain timeout. The following link implements a timeout logic for a method:

    http://kossovsky.net/index.php/2009/07/csharp-how-to-limit-method-execution-time/

    EDIT

    One of the comments on the topic above suggest a better implementation using .NET Async Pattern:

    public static T SafeLimex<T>(Func<T> F, int Timeout, out bool Completed)   
       {
           var iar = F.BeginInvoke(null, new object());
           if (iar.AsyncWaitHandle.WaitOne(Timeout))
           {
               Completed = true;
               return F.EndInvoke(iar);
           }
             F.EndInvoke(iar);
             Completed = false;
           return default(T);
       }