Problema con NotifyIcon que no desaparece en la aplicación Winforms

Tengo una aplicación .Net 3.5 C # Winforms. No tiene GUI como tal, solo un NotifyIcon con un ContextMenu.

He intentado establecer el NotifyIcon en visible = false y desecharlo en el evento Application_Exit, de la siguiente manera:

        if (notifyIcon != null)
        {
            notifyIcon.Visible = false;
            notifyIcon.Dispose();
        }

La aplicación obtiene el código dentro de los corchetes, pero lanza una excepción de referencia nula cuando intenta establecer Visible = false.

He leído en algunos lugares para ponerlo en el evento de cierre de formulario, pero ese código nunca se ve afectado (¿quizás porque no tengo un formulario que se muestre como tal?).

¿Dónde puedo poner este código para que realmente funcione? Si no lo pongo, aparece el molesto icono persistente en la bandeja hasta que mueves el mouse sobre ella.

Aclamaciones.

EDITAR

Solo algo extra que he notado ...........

Estoy usando ClickOnce en la aplicación ......... si acabo de salir de la aplicación a través del ContextMenu en el NotifyIcon, no se registra ninguna excepción.

Justo cuando el evento Application_Exit se activa después de que la aplicación haya verificado una actualización aquí ...

private void CheckForUpdate()
{
    EventLogger.Instance.LogEvent("Checking for Update");
    if (ApplicationDeployment.IsNetworkDeployed && ApplicationDeployment.CurrentDeployment.CheckForUpdate())
    {
        EventLogger.Instance.LogEvent("Update available - updating");
        ApplicationDeployment.CurrentDeployment.Update();
        Application.Restart();
    }
}

¿Esto ayuda?

Respuestas a la pregunta(6)

Su respuesta a la pregunta