Datagrid not refreshing correctly with Async Ping VB .Net
I have a similar problem (but I have to use PSLoggedOn.Exe which times out in 10-15 seconds).

To mitigate the problem I use WMI to Ping.

I will then do PSLoggedOn only if the result was a valid IPnumber.

WmiPingStatus is perhaps a little less reliable because it is faster.
But if You don't get an answer you will get an answer the next loop.

    Friend Function WmiPingStatus(computer As String) As String
    Dim searcher As New ManagementObjectSearcher("SELECT ProtocolAddress FROM Win32_Pingstatus WHERE Address = '" &amp; computer &amp; "'")
    For Each wmiObj As ManagementObject In searcher.Get()
        For Each prop As PropertyData In wmiObj.Properties
            If prop.Name.Equals("ProtocolAddress", StringComparison.InvariantCultureIgnoreCase) Then Return wmiObj(prop.Name.ToString).ToString
        Next
    Next
    Return ""
End Function


Your function PingHost is not async but You can do it async if You use :

Await preply = SendAsync(host, Object)

But that is only part of the problem becasue You still have to wait for the answer.
Async is allways good because it will use less resources when Waiting.
And while You wait you could perhaps do for example 5 Task in "Parallell".
But then You still have to wait for the longest query to end.
So perhaps WmiPingStatus could be useful also for You