2012-06-11 29 views
5

Tengo una aplicación que se ejecuta únicamente desde la bandeja del sistema, su único propósito es brindarle información al usuario a través de Ballon Tips.Icono de notificación permanece en la bandeja del sistema en la aplicación Cerrar

Funciona bien, aparte de una pequeña molestia. Cuando la aplicación se cierra utilizando el Administrador de tareas (en lugar de usar el menú contextual), el icono se queda en la bandeja del sistema, hasta que se coloca sobre él, y cuando se abre otra instancia, aparece un segundo icono junto al primero.

Mi Forma evento cerrado se parece a esto, no hace nada:

private void frmMain_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    ntfyIcon.Visible = false; 
    ntfyIcon.Icon = null; 
    ntfyIcon.Visible = false; 
    ntfyIcon.Dispose(); 
} 

Este has been reported on Microsoft Connect y se ha cerrado por Microsoft bajo Won't Fix como, al parecer, esto es lo que se supone que sucede pero esperaba que alguien tenía una solución.

Estaba pensando algo sobre la línea de limpiar la bandeja del sistema en la aplicación abierta?

Gracias

+4

se espera un comportamiento - que afecta a todos los * * programa que coloca un icono en la bandeja del sistema, no sólo la suya. Y no hay API para interactuar con el área de notificación. –

+0

Temía tanto, acabo de tener uno de esos "Lo sé, uno de los genios 'en desbordamiento de pila habrá calculado esto" momentos – JMK

+0

Encontré una publicación de blog que respondió mi pregunta - http://tinyurl.com/ notificationarea – JMK

Respuesta

1

Para mí, funciona al llamar Application.DoEvents() después que los ajustes Icon a null y disponer el NotifyIcon.

private void frmMain_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    ntfyIcon.Icon = null; 
    ntfyIcon.Dispose(); 
    System.Windows.Forms.Application.DoEvents(); 
} 
Cuestiones relacionadas