Directory.Exists()如果在Windows登录

时间:2017-10-04 11:11:23

标签: c# caching windows-8.1 shared-directory

我有一个应用程序,可以在启动时检查是否存在网络文件夹。如果它没有找到网络文件夹,那么它会一直保持轮询,直到它完成,然后进行正确的处理。

Logger.Instance.LogDebug("Checking for network location: |" + Settings.Instance.TransferNetworkLocation + "|");

if (Directory.Exists(Settings.Instance.TransferNetworkLocation))
{
     // Do the stuff

}
else
{
    Logger.Instance.LogDebug("Couldn't find the network location!");
    IsNetworkLocationAvailable = false;
    DisplayNetworkWarning = true;
    return;
}

Settings.Instance.TransferNetworkLocation的值类似于\\MYHOST-PC12345\My Shared Location\

现在有时网络无法使用,在这种情况下,它会一直保持轮询直到可用。一切正常

除了:

当应用程序设置为在Windows启动时启动!当然,网络在启动时没有连接,网络连接需要几秒钟。所以我希望它会失败(即返回false)一段时间。

但是它继续轮询,甚至在建立网络连接并且用户可以进入Windows资源管理器并浏览到该共享文件夹之后,但是对Directory.Exists()的调用继续返回false并且从不意识到文件夹现在存在。

我注意到你可以在该代码中看到的日志记录,第一次检查网络文件夹时,它需要一些时间才能失败 - 我假设它正在等待超时。但是它每隔一段时间检查一次,它没有时间花这么长时间,并立即回应该文件夹不存在。

是否有某种缓存无法找到此位置?如果是这样,有没有办法解决这个问题?

0 个答案:

没有答案