C# 无法处置控件(NotifyIcon)

C# 无法处置控件(NotifyIcon),c#,dispose,idisposable,notifyicon,C#,Dispose,Idisposable,Notifyicon,在我的家庭作业申请中;我需要创建一个应用程序,其中我还需要使用NotifyIcon。 我面临一个问题,我无法理解为什么代码从未到达Dispose事件。 我正在实现“IDisposable”;(以便能够在Notify图标上调用Dispose)。 但是,在dispose事件中添加断点之后;我看得出我够不着它。 我真的不明白为什么它没有到达那里 我目前正在跟踪此线程以帮助我完成此控件: 谁能帮助我理解为什么会发生这种情况,或者我错过了什么 我的班级代码: private NotifyIcon


在我的家庭作业申请中;我需要创建一个应用程序,其中我还需要使用NotifyIcon。
我面临一个问题,我无法理解为什么代码从未到达Dispose事件。
我正在实现“IDisposable”;(以便能够在Notify图标上调用Dispose)。 但是,在dispose事件中添加断点之后;我看得出我够不着它。 我真的不明白为什么它没有到达那里

我目前正在跟踪此线程以帮助我完成此控件:

谁能帮助我理解为什么会发生这种情况,或者我错过了什么

我的班级代码:

    private NotifyIcon trayIcon;

    public void CreateTrayIcon()
    {
        if (trayIcon == null) { trayIcon = new NotifyIcon(); }
        trayIcon.Text = "My Tray Application";
        trayIcon.Icon = Properties.Resources.AppIcon;
        trayIcon.Disposed += TrayIcon_Disposed;

        trayIcon.Visible = true;
    }

    private void TrayIcon_Disposed(object sender, EventArgs e) // Unreacheable Code
    {
        if (trayIcon != null) 
        {
            trayIcon.Visible = false;
            trayIcon = null;
        }
    }

    protected virtual void Dispose(bool Disposing)
    {
        if (Disposing)
        {
           trayIcon.Dispose();
        }
    }
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
并在主窗体上调用NotifyIcon配置;Form_ClosingEvent

private void Form_closing(object sender, FormClosingEventArgs e)
{
    trayIcon.Dispose();
}

我发现了问题所在

我的问题背后的原因;简直是分心。 我假设FormClosing事件已经订阅了(老实说:我确信我已经订阅了它。我一定是做了某种回滚并错误地删除了它)


解决方案:只需检查事件是否已订阅。

整个类在哪里使用?没有自动调用
Dispose
方法仅仅因为您实现了它。请显示处理类实例的代码;我完全忘了添加我调用Dispose的代码部分。已经更新了我的问题。我调用Dispose from:FormClosing事件的主窗体。