check if network drive exists with timeout in c#

廉价感情. 提交于 2019-12-03 17:31:55

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);
   } 

As far as I recall, using the normal System.IO methods do the trick. So in this case, you'd simply use:

if (Directory.Exists("Z:\\MyNetworkFolder"))
{
    // Gogogo
}
else
{
    Thread.Sleep(MyTimeout);
}

If the folder does not exist, pause for whatever timeout you choose. This should do the job perfectly.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!