【发布时间】:2016-06-15 13:26:04
【问题描述】:
我正在编写程序的一部分,该程序应将一批文件从当前计算机复制到定义的计算机列表中。 如果这些计算机不可用,代码将在尝试访问它们时挂起很长时间。 C# 中是否有任何功能可以检查机器是否可用,如果不可用则跳过?
MFWs = File.ReadAllLines(GuiManager.MyConfigManagerConfig.MachinesList);
foreach (string MFW in MFWs)
{
if (MFW != System.Environment.MachineName)
{
String target = @"\\" + MFW + @"\D\IbSi\config\" + Path.GetFileName(ConfigFile);
String backup = @"\\" + MFW + @"\D\IbSi\userdata\" + Path.GetFileName(ConfigFile);
try
{
File.Copy(source, target, true);
File.Copy(source, backup, true);
}
catch (Exception ex)
{
Manager.SendMessage("Failed to copy " + Path.GetFileName(ConfigFile) + " to " + MFW + "\n" + ex.Message);
}
}
}
【问题讨论】:
-
你总是在处理“当你请求它是否可用时它可能可用,但当你真正需要它时却不是。”;所以你最好的选择是尝试操作。您可以做一些事情;确保本地计算机上的 DNS 条目是最新的;也许这会减少解决所需的时间。看起来这个 Stack Overflow 问题就是这样处理的;通过使用线程(或任务)执行某些任务(如文件复制)并在时间过长时超时:stackoverflow.com/questions/1232953/…
标签: c#