相关疑难解决方法(0)

如何:检查不可用的网络共享时防止超时 - C#

我们有一些基本的C#逻辑,它遍历目录并返回其中的文件夹和文件.当针对无法访问或无效的网络共享(\\ server\share\folder)运行时,代码似乎在从调用返回之前"挂起"大约30秒.

我想最终得到一个方法,它将尝试从给定路径获取文件夹和文件,但没有超时期限.换句话说,完全减少或消除超时.

我已经尝试过一些简单的事情,就像提前验证目录的存在一样简单,认为"不可用"的网络驱动器会很快返回false,但是没有按预期工作.

System.IO.Directory.Exists(path) //hangs 

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); //hangs
Run Code Online (Sandbox Code Playgroud)

关于什么可以帮助我实现有效(并且希望管理)的解决方案的任何建议?

c# windows filesystems networking

15
推荐指数
2
解决办法
1万
查看次数

如何避免GetFileAttributes中的网络停顿?

我正在测试远程共享(在Windows服务器上)中是否存在文件.用于测试的基础函数是WinAPI的GetFileAttributes,发生的情况是该函数在各种情况下可能需要过多的时间(几十秒),例如当目标服务器处于脱机状态,存在权限或DNS问题时等.

但是,在我的特定情况下,它始终是LAN访问,因此如果文件在不到1秒的时间内无法访问,那么通常无法通过等待几十秒来访问...

是否有替代GetFileAttributes不会失速?(除了在一个线程中调用它并在超时后杀死线程,这似乎带来了自己的问题)

windows networking

12
推荐指数
1
解决办法
7673
查看次数

如何使用Delphi 5快速检查网络位置是否存在?

可能的重复项:
加快不存在的网络共享的File.Exists的
速度。

我们需要将文本写入网络上的文件,但是可能存在该位置不存在的情况,而我们需要写入另一个位置。您如何快速检查网络位置是否存在?尝试使用“ try ... except”将文本写入不存在的位置需要花费30秒钟。当然必须有一个更快的方法吗?

如果有人可以给我一些指示,我将不胜感激。

谢谢!

delphi file-io networking

4
推荐指数
1
解决办法
8344
查看次数

程序在访问断开连接的驱动器时冻结30秒

我有这段代码让我发疯.

FUNCTION DiskInDrive(CONST DriveNumber: Byte): BOOLEAN;
VAR ErrorMode  : Word;
BEGIN
  RESULT:= FALSE;
  ErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  TRY
    if DiskSize(DriveNumber) <> -1  { %%%% THIS IS VERY SLOW IF THE DISK IS NOT IN DRIVE !!!!!! }
    THEN RESULT:= TRUE;
  FINALLY
    SetErrorMode(ErrorMode);
  END;
END;
Run Code Online (Sandbox Code Playgroud)

它检查磁盘是否已准备好使用(以及提供的驱动器号是否与有效磁盘相对应).问题是,当我尝试访问断开连接的网络驱动器(映射为驱动器的网络文件夹)时,它会冻结大约10-30秒.

代码位于我创建的组件的构造函数中.

如何在不等待那么久的情况下检查驱动器?

delphi

3
推荐指数
1
解决办法
550
查看次数

标签 统计

networking ×3

delphi ×2

windows ×2

c# ×1

file-io ×1

filesystems ×1