Thetype exposes the following members.
Disposes any unused underlying Ping instances.
Releases all resources associated with the instance.
Releases all associated resources.
Determines whether the specified object is equal to the current object.(Inherited from Object.)
Serves as the default hash function.(Inherited from Object.)
Gets the Type of the current instance.(Inherited from Object.)
Creates a shallow copy of the current Object.(Inherited from Object.)
Pings a IP address.
Pings a IP address passed as a string.
Returns a string that represents the current object.(Inherited from Object.)
Unfortunately, the .NET Framework Ping class is not threadsafe (even the async methods). So, we need to ensure that only one ping request is performed on any given instance.
My original idea was to simply create and dispose Ping] instances on the fly for each request, but I changed my mind after thinking about the potential performance overhead as well as the potential for exhausting ephemeral socket ports.
Instead, I'm going to maintain a queue of Ping instances that that can be reused for subsequent queries.