ユーザーが指定できる名前で複数のコンピューターにpingを実行するC#Windowsフォームアプリを構築しています。
System.Net.NetworkInformation.PingクラスとSendAsyncメソッドを使用しており、結果を処理するメソッドがあります。
私が抱えている問題は、ユーザーが存在しないコンピューター名を指定したときに発生します。ただし、Pingがコールバックメソッドにエラーを返すのではなく、Application.Run(new Form())(フォーム全体のメインメソッド)でTargetInvocationExceptionが発生します。関連するコードをtry/catchで囲んでみましたが、例外をキャッチしていないようです。
pingに関連するコードは次のとおりです。
Ping p = null;
try
{
p = new Ping();
p.PingCompleted += new PingCompletedEventHandler (updateUI);
p.SendAsync(computername, 10, computername);
}
catch (Exception)
{
((IDisposable)p).Dispose();
MessageBox.Show("Ping Failed...");
}