【发布时间】:2010-01-19 18:11:02
【问题描述】:
我有这段代码让我发疯。
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;
它检查磁盘是否可以使用(以及提供的驱动器号是否对应于有效磁盘)。 问题是当我尝试访问断开连接的网络驱动器(网络文件夹映射为驱动器)时,它会冻结大约 10-30 秒。
代码在我制作的一个组件的构造函数中。
如何在不等那么久的情况下检查驱动器?
【问题讨论】:
-
你不能;这适用于本地和网络资源。另请参阅此问题的答案:stackoverflow.com/questions/1438923/… 在单独的线程中解决此问题(如果您检查多个设备:每个线程一个设备)
标签: delphi