private void CheckDestroy()
{
// If the object was already marked as destroyed, finish the deallocation.
if (m_destroyed)
{
// Remove the socket from the reaper's poller.
m_poller.RemoveHandle(m_handle);
// Remove the socket from the context.
DestroySocket(this);
// Notify the reaper about the fact.
SendReaped();
// Deallocate.
base.ProcessDestroy();
}
}