Почему NotifyIcon дублирует себя при смене иконки - PullRequest
0 голосов
/ 13 апреля 2020

Я написал небольшое приложение, которое в основном работает в системном трее. Приложение показывает уведомление при запуске, которое отлично работает. Если я запускаю действие из ContextMenuStrip, уведомитель должен изменить свой значок и вернуться к исходному после завершения процесса.

Я испытываю странное поведение: значок дублируется при первом действии и изменяет его значок правильно. Теперь я запускаю два уведомления в системном трее: одно из них работает правильно и меняет свой значок, когда задачи заканчиваются sh, другое просто остается там и функционирует - но без изменения значка.

I Я не уверен, откуда взялся второй значок.

Это часть кода, который я создаю при запуске уведомления:

Public Class NotifyIconManager
    Private notifyIcon As NotifyIcon
    Public Sub New()
        notifyIcon = New NotifyIcon
        notifyIcon.Icon = My.Resources.icon_normal
        notifyIcon.Text = "Ready."
        notifyIcon.ContextMenuStrip = Main.notifyicon_ContextMenuStrip
        notifyIcon.Visible = True
        AddHandler notifyIcon.MouseDoubleClick, AddressOf DoubleClick
    End Sub

    Public Sub SetNotifyIconUsage()
        notifyIcon.Icon = My.Resources.icon_busy
        notifyIcon.Text = "Working."
    End Sub

    Public Sub SetNotifyIconIdle()
        notifyIcon.Icon = My.Resources.icon_normal
        notifyIcon.Text = "Ready."
    End Sub
End Class

Я меняю значок с помощью вызова boot.NotifyIconManager.SetNotifyIconUsage() или boot.NotifyIconManager.SetNotifyIconIdle() до запуска фонового работника. Один экземпляр класса создается в моей основной форме запуска:

Public NotifyIconManager As New NotifyIconManager

Теперь вопрос: как мне избавиться от дублированного уведомления?

I Я уже пытался утилизировать notifyicon и создавать новый каждый раз, когда я хочу поменять значок, но это также создает дубликат. Установка значка на Ничто и затем возврат к новому значку также не работает для меня.

1 Ответ

0 голосов
/ 14 апреля 2020

После некоторой отладки (спасибо, что заставили меня использовать точки останова jmcilhinney!), Я обнаружил, что на самом деле случайно создаю вторую основную форму. Это привело к двум уведомлениям.

...