私は現在のコンピュータから定義されたコンピュータのリストにファイルのバッチをコピーするプログラムの一部を書いています。 これらのコンピュータが利用できない場合、コードにアクセスしようとして長時間ハングします。マシンが使用可能かどうかをチェックし、そうでない場合はスキップするためにC#にfunctionallityがありますか?リモートコンピュータが利用可能かどうかを確認するには?
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エントリが最新であることを確認してください。おそらくそれは時間の分解を短縮するでしょう。このスタックオーバーフロー問題はちょうどそれを扱うように見えます;スレッド(またはタスク)を使用して特定のタスク(ファイルコピーなど)を実行し、時間がかかりすぎる場合はタイムアウトします。http://stackoverflow.com/questions/1232953/speed-up-file-exists-for-non- existing-network-shares –