Есть много вопросов о SO, которые задают одно и то же сомнение. Решением для этого является установка
notifyIcon.icon = null и вызов Dispose для него в событии FormClosing.
В моем приложении такой формы нет, но есть значок уведомления, который обновляется в Events.
При создании я скрою свою форму и создаю ShowInTaskbar свойство false. Следовательно, я не могу иметь события FormClosing или FormClosed.
Если это приложение получает событие для выхода, оно вызывает Process.GetCurrentProcess().Kill(); для выхода.
Я добавил notifyIcon.icon = null, а также Dispose перед убийством, но значок остается на панели задач до тех пор, пока я наведите указатель мыши на него.
EDIT. Если я предполагаю, что это поведение вызвано вызовом GetCurrentProcess().Kill(), есть ли элегантный способ выйти из приложения, которое очистит все ресурсы и удалит значок из панели задач.