Using ping As New System.Net.NetworkInformation.Ping()
'' etc
End Using
Да, это не сработает. Вы удаляете объект ping до завершения асинхронной отправки. Раньше вам это удавалось, потому что класс Ping неправильно реализовал метод Dispose (). Это исправлено в .NET 4, отчет обратной связи здесь .
Исправление простое, удалите Используя. Правильно утилизировать его не так просто, когда вы используете его асинхронно. Попробуйте это в случае или не беспокойтесь.
В противном случае хорошая демонстрация того, как исправления ошибок в фреймворке могут нарушить работу кода:)