調試winform程式的時候使用托盤表徵圖遇到關閉了程式但是托盤表徵圖並沒有消失的情況,但是滑鼠滑過表徵圖就消失了,這樣軟體開啟關閉次數多了會出現在托盤堆積大量表徵圖的情況,開始以為是作業系統重新整理問題,後來使用手動釋放表徵圖資源問題解決。
具體就是使用如下方法:
|
Dispose() |
Releases all resources used by the Component.(繼承自 Component。) |
在form的closing事件中直接調用
this.notifyIcon1.disponse() 也可以參考官方樣本
using System;using System.Drawing;using System.Windows.Forms;public class Form1 : System.Windows.Forms.Form{ private System.Windows.Forms.NotifyIcon notifyIcon1; private System.Windows.Forms.ContextMenu contextMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.ComponentModel.IContainer components; [STAThread] static void Main() { Application.Run(new Form1()); } public Form1() { this.components = new System.ComponentModel.Container(); this.contextMenu1 = new System.Windows.Forms.ContextMenu(); this.menuItem1 = new System.Windows.Forms.MenuItem(); // Initialize contextMenu1 this.contextMenu1.MenuItems.AddRange( new System.Windows.Forms.MenuItem[] {this.menuItem1}); // Initialize menuItem1 this.menuItem1.Index = 0; this.menuItem1.Text = "E&xit"; this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click); // Set up how the form should be displayed. this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "Notify Icon Example"; // Create the NotifyIcon. this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); // The Icon property sets the icon that will appear // in the systray for this application. notifyIcon1.Icon = new Icon("appicon.ico"); // The ContextMenu property sets the menu that will // appear when the systray icon is right clicked. notifyIcon1.ContextMenu = this.contextMenu1; // The Text property sets the text that will be displayed, // in a tooltip, when the mouse hovers over the systray icon. notifyIcon1.Text = "Form1 (NotifyIcon example)"; notifyIcon1.Visible = true; // Handle the DoubleClick event to activate the form. notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); } protected override void Dispose( bool disposing ) { // Clean up any components being used. if( disposing ) if (components != null) components.Dispose(); base.Dispose( disposing ); } private void notifyIcon1_DoubleClick(object Sender, EventArgs e) { // Show the form when the user double clicks on the notify icon. // Set the WindowState to normal if the form is minimized. if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal; // Activate the form. this.Activate(); } private void menuItem1_Click(object Sender, EventArgs e) { // Close the form, which closes the application. this.Close(); }}