2008-09-23 55 views
1

我的win32 C++应用程序经常检查通常驻留在网络共享中的文件[在我们的公司网络中]。但是,如果计算机未连接到网络,则应用程序会冻结几分钟,用户通常不得不结束该过程。如何在打开文件之前检查文件是否可访问?如何确保fopen()在未连接到网络时不会阻塞?

检查网络连接是否存在可能不够好。用户断开连接的原因是用于文件不存在的测试网络。

回答

2

我觉得一个线程是最好的选择。

似乎没有办法异步调用CreateFile API。一旦文件句柄打开,你就可以对其执行异步I/O,但打开它的行为仍然是同步的。

您必须自己管理与线程的同步,因为只有您的应用程序知道它何时需要fopen的结果,并且它可能仍然会在此时结束阻塞。

2

将文件访问放入单独的线程?

+0

我正要提出同样的事情:-) – 2008-09-23 15:27:24

1

在我看来,这种方法在一个单独的线程将是你最好的选择。

File.Exists