Example #1
0
 public static NotifyIconManager GetInstance()
 {
     if (instance == null)
     {
         lock (_lock)
         {
             if (instance == null)
             {
                 instance = new NotifyIconManager();
             }
         }
     }
     return(instance);
 }
Example #2
0
        /// <summary>
        /// 显示Windows系统通知
        /// </summary>
        /// <param name="title">显示的标题,一般为 Snap Desktop</param>
        /// <param name="content">显示的内容</param>
        /// <param name="clickEvent">点击通知触发的<see cref="Action"/></param>
        /// <param name="closeEvent">通知消失时触发的<see cref="Action"/></param>
        /// <param name="timedout">通知显示的时间,以毫秒为单位</param>
        public static void ShowNotification(string title, string content, Action clickEvent = null, Action closeEvent = null, int timedout = 3000)
        {
            NotifyIcon icon = NotifyIconManager.GetInstance().NotifyIcon;

            icon.ShowBalloonTip(timedout, null /*title*/, content, ToolTipIcon.None);
            icon.BalloonTipClicked += OnIconOnBalloonTipClicked;
            icon.BalloonTipClosed  += OnIconOnBalloonTipClosed;

            void OnIconOnBalloonTipClicked(object sender, EventArgs e)
            {
                clickEvent?.Invoke();
                icon.BalloonTipClicked -= OnIconOnBalloonTipClicked;
            }

            void OnIconOnBalloonTipClosed(object sender, EventArgs e)
            {
                closeEvent?.Invoke();
                icon.BalloonTipClosed -= OnIconOnBalloonTipClosed;
            }
        }