私は、複数のサーバー上に多数のカスタムWindowsパフォーマンスカウンタを配置し、それらをデータベースに集約するプロジェクトを持っています。サーバーがダウンしている場合、私はそれをスキップして、私の一日を続けるだけです。C#でネットワーク経由でサーバーにアクセスできるかどうかを確認するための速い方法
現在のところ、サーバーがライブであるかどうかを調べるには、あとで処理してみる必要があるシェアでDirectoryInfo
を実行してから、.Exists
プロパティをチェックしてください。これは現在のコードスニペットですテスト:
DirectoryInfo di = new DirectoryInfo(machine.Share_Path);
if (!di.Exists)
{
log.Warn("Could not access " + machine.Name + "! Maybe its down?");
continue; // Skips to the next server in my loop where this snippet exists.
}
これは機能しますが、かなり遅いです。 di.Existsビットが作業を終了するまでに平均で約68秒かかります。サーバーにアクセスできるかどうかを1秒以内に知る必要があります。サーバーはping可能ですが、私たちの環境では "生きていない"ため、pingもオプションではありません。
私はまだ.NETの世界には新鮮なので、人々が提供できるアドバイスはありません。
ありがとうございます。
-Weegee
サーバーがあるとき、サーバーがないとき、またはその両方のときに68秒かかりますか? –
サーバーが存在しない場合。サーバーがある場合は、1秒未満かかります。 – Weegee
別のワーカースレッドでチェックを実行するのはどうでしょうか? – Dolphin