1

我在 CentOS 6.0 上使用 Qt 4.7。我有一个安装了 CIFS 的远程共享文件夹:

mount -t cifs //PC128/mnt /media/net -o username=user,password=pwd,rw,noexec,soft,uid=user,gid=user

当远程文件夹以某种方式错误地断开连接(例如,网络电缆被拔出)时,我的应用程序挂起,因为 QDir 锁定尝试触摸文件夹(例如 QDir::exists 调用)。大约 90 秒后,它解锁并返回 false。

看起来不错 - 超时

4

1 回答 1

1

QDir使用同步文件 API。当底层文件系统冻结时,它也会冻结。有 2 个选项可以避免 GUI 冻结:

1.将文件操作移至单独的线程。使用信号/槽连接请求线程执行QDir::exists调用并将结果传递回 GUI 线程。如果文件系统冻结,只有后台线程将被冻结。GUI 仍将运行。

2.使用使用异步文件 API 的库。该库发出的任何请求都会立即将控制流返回给您的应用程序。结果将传递给回调函数。有关可用选项,请参阅此问题

于 2013-07-29T21:43:05.867 回答