【发布时间】:2014-09-22 15:32:13
【问题描述】:
我希望是一个相当简单的问题。
在 Qt 应用程序中,我经常访问工作组网络中 Windows PC 上的文件夹。网络路径的形式为"\\NETWORKDEVICE\folder" 或沿这些行。为了检查路径是否存在,我一直在使用 QDir,如下所示:
pathString = "somepathhere";
if(QDir(pathString).exists())
workHere(pathString);
在其他情况下,我使用 QUrl 通过 Windows 资源管理器打开特定文件或文件夹,如下所示:
pathString = "somepathhere";
QUrl url = pathString;
QDesktopServices::openUrl(url);
我可以像这样混合两者,以确保路径事先存在。
pathString = "somepathhere";
if(QDir(pathString).exists())
{
QUrl url = pathString;
QDesktopServices::openUrl(url);
{
问题是每当我使用 QDir::exists() 时,如果路径当前处于脱机状态或与运行我的程序的那台 PC 的连接很差,Windows 会将应用程序挂在那里长达 40 秒在返回 QDir::exists() 的答案之前。 (如果您尝试在资源管理器中打开一条向下的网络路径,您会看到同样的反应;地址栏在搜索时会缓慢填充绿色,直到它放弃。)
我的程序等待响应的时间非常长,所以我想知道是否有人对如何处理这种情况有更好的想法。我可能忽略了一些设置或替代功能,但截至目前我没有想法。我希望使用此代码来确保在指定文件和文件夹处于脱机状态时访问我的备用文件和文件夹。
非常感谢您的帮助,如果我错过了网站上的任何规则或礼仪,我深表歉意。
【问题讨论】:
标签: c++ windows visual-studio-2012 networking qt5