代码之家  ›  专栏  ›  技术社区  ›  Steve Hanov

如何确保fopen()在未连接到网络时不会阻塞?

  •  1
  • Steve Hanov  · 技术社区  · 16 年前

    我的Win32 C++应用程序经常检查一个文件,该文件通常驻留在网络共享中[在我们的公司网络中]。但是,如果计算机没有连接到网络,应用程序会冻结几分钟,用户通常必须结束该过程。在打开文件之前,如何检查该文件是否可访问?

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

    3 回复  |  直到 16 年前
        1
  •  2
  •   Rob Walker    16 年前

    我觉得穿线是你最好的选择。

    似乎没有异步调用createfile API的方法。打开文件句柄后,可以对其进行异步I/O,但打开它的操作仍然是同步的。

    你将不得不自己管理与线程的同步,因为只有你的应用程序知道它何时需要fopen的结果,它可能最终仍然会阻塞在那一点上。

        2
  •  2
  •   Richard Walton    16 年前

    把文件访问放到单独的线程中?

        3
  •  1
  •   Chris J    16 年前

    在我看来,在单独的线程中使用这种方法是最好的选择。

    File.Exists