Я создаю приложение формы Windows C#, которое пингует несколько компьютеров по имени, которое пользователь может указать.C# Ping завершает работу всей программы
Я использую класс System.Net.NetworkInformation.Ping и метод SendAsync с помощью метода обработки результата.
Проблема, с которой я столкнулась, возникает, когда пользователь указывает имя компьютера, которое не существует. Однако вместо того, чтобы Ping возвратил ошибку моему методу обратного вызова, я получаю исключение TargetInvocationException в Application.Run (new Form()) (основной метод всей формы). Я попытался окружающие соответствующий код с TRY/улова, но они никогда не поймать за исключением
Вот соответствующий код для пинг:
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...");
}
Посмотрите на StackTrace внутреннего исключения исключения TargetInvocationException, чтобы узнать, откуда исходит исключение. – dtb
Или попробуйте использовать Отправить вместо этого в отдельной теме –
Проверьте свой PingCompletedEventHandler. Вы делаете это асинхронно, поэтому не все происходит внутри блока catch try. Ваше событие будет появляться отдельно. – JamieSee