我编写的一个应用程序在某个事件发生时显示一个气球提示(使用NotifyIcon.ShowBalloonTip()
)。当系统处于锁定状态时,也可能发生这种情况。
在这种情况下,气球提示在解锁后不会立即显示,或者根本不显示——这两种情况都很好,也很有意义。但是,它会在一段时间后显示——有时超过半小时。
这种行为是非常烦人的,我想知道是否有一种方法来防止它,除了检查屏幕是否被锁定之前显示气球提示
任务栏通知(这是官方术语)具有与它们相关的棘手逻辑。
-
通知要么立即显示,要么在从某些状态恢复后显示,例如当PC被锁定(或玩全屏游戏):
http://blogs.msdn.com/b/oldnewthing/archive/2005/01/10/349894.aspx -
在Vista和更高版本中,通知只显示 9秒,这是不可调的:
http://blogs.msdn.com/b/oldnewthing/archive/2011/05/18/10165605.aspx -
通知气球在用户第一次登录的第一个小时内根本不显示:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee330740 (v = vs.85) . aspx
最重要的是,Windows不能保证用户会看到它们。在Windows UX指南中,他们说:
不要假设用户会看到你的通知。用户不会看到的时候:
- 他们沉浸在工作中。
他们没有注意到。他们离开了电脑。他们正在运行一个全屏的应用程序。- 他们的管理员已经关闭了所有的通知。
它还指出用户也可能无法及时看到消息,在这种情况下,您应该在消息不再相关时取消消息队列。你可以通过调用ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None)
来实现。我认为这样做是你最好的选择,以防止无关的气球显示。