Cómo detectar un Socket Disconnect en C #

Estoy trabajando en una relación cliente / servidor que está destinada a enviar datos de un lado a otro durante un período de tiempo indeterminado.

El problema que estoy tratando de resolver está en el lado del cliente, ya que no puedo encontrar una manera de detectar una desconexión.

He tomado un par de pases en soluciones de otras personas, que van desde la simple captura de excepciones de IO hasta el sondeo del socket en los tres SelectModes. También he intentado usar una combinación de una encuesta, con una verificación en el campo 'Disponible' del socket.

// Something like this
Boolean IsConnected()
{
    try
    {
        bool part1 = this.Connection.Client.Poll(1000, SelectMode.SelectRead);
        bool part2 = (this.Connection.Client.Available == 0);

        if (part1 & part2)
        {
            // Never Occurs
            //connection is closed
            return false;
        }
        return true;
    }
    catch( IOException e )
    {
        // Never Occurs Either
    }
}

En el lado del servidor, un intento de escribir un carácter 'vacío' (\ 0) en el cliente obliga a una excepción de IO y el servidor puede detectar que el cliente se ha desconectado (un concierto bastante fácil).

En el lado del cliente, la misma operación no produce ninguna excepción.

// Something like this
Boolean IsConnected( )
{
    try
    {

        this.WriteHandle.WriteLine("\0");
        this.WriteHandle.Flush();
        return true;
    }
    catch( IOException e )
    {
        // Never occurs
        this.OnClosed("Yo socket sux");
        return false;
    }
}

Un problema que creo que estoy teniendo al detectar una desconexión a través de una encuesta, es que puedo encontrar fácilmente un falso en un SelectRead, si mi servidor aún no ha devuelto nada al cliente desde la última comprobación ... No seguro qué hacer aquí, he perseguido todas las opciones para hacer esta detección que puedo encontrar y nada ha sido 100% para mí, y en última instancia mi objetivo aquí es detectar un error en el servidor (o conexión), informar al cliente, espere para volver a conectarse, etc. Así que estoy seguro de que pueden imaginar que esta es una pieza integral.

Aprecie las sugerencias de cualquiera. Gracias de antemano.

EDITAR: Cualquier persona que vea esta pregunta debe anotar la respuesta a continuación, y mis Comentarios FINALES al respecto. He explicado cómo superé este problema, pero aún tengo que hacer una publicación de estilo "Preguntas y respuestas".