gpt4 book ai didi

c# - 在网络中断时使用 Directory.Exists 在网络文件夹上

转载 作者:可可西里 更新时间:2023-11-01 08:24:10 50 4
gpt4 key购买 nike

我公司的代码库包含以下 C# 行:

bool pathExists = Directory.Exists(path);

在运行时,字符串 path 恰好是公司内部网上文件夹的地址 - 类似于 \\company\companyFolder。当从我的 Windows 机器到内联网的连接建立时,这工作正常。但是,当连接断开时(就像今天那样),执行上面的行会导致应用程序完全卡住。我只能通过使用任务管理器将其终止来关闭应用程序。

当然,在这种情况下,我宁愿让 Directory.Exists(path) 返回 false。有办法做到这一点吗?

最佳答案

对于这种情况,无法更改 Directory.Exists 的行为。在幕后,它在 UI 线程上通过网络发出同步请求。如果网络连接由于中断、流量过大等原因挂起……它也会导致 UI 线程挂起。

你能做的最好的事情就是从后台线程发出这个请求,并在经过一定时间后明确放弃。例如

Func<bool> func = () => Directory.Exists(path);
Task<bool> task = new Task<bool>(func);
task.Start();
if (task.Wait(100)) {
return task.Value;
} else {
// Didn't get an answer back in time be pessimistic and assume it didn't exist
return false;
}

关于c# - 在网络中断时使用 Directory.Exists 在网络文件夹上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434958/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com