Problema com o NotifyIcon não desaparecendo no aplicativo Winforms

Eu tenho um aplicativo .net 3.5 C # Winforms. Não tem GUI como tal, apenas um NotifyIcon com um ContextMenu.

Eu tentei definir o NotifyIcon para visible = false e descartá-lo no evento Application_Exit, da seguinte maneira:

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

O aplicativo chega ao código dentro dos colchetes, mas lança uma exceção de referência nula quando tenta definir Visible = false.

Eu li em alguns lugares para colocá-lo no evento de fechamento de formulário, mas esse código nunca é atingido (talvez como eu não tenho um formulário mostrando como tal?).

Onde posso colocar este código para que funcione realmente? Se eu não colocá-lo, recebo o ícone persistente e chato na bandeja até que você passe o mouse sobre ele.

Felicidades.

EDITAR

Apenas algo extra eu notei ...........

Estou usando o ClickOnce no aplicativo ......... se eu apenas sair do aplicativo por meio do ContextMenu no NotifyIcon, nenhuma exceção será registrada.

Apenas quando o evento Application_Exit é disparado depois que o aplicativo foi verificado para uma atualização aqui ..

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();
    }
}

Isso ajuda?

questionAnswers(6)

yourAnswerToTheQuestion