2011-08-20 41 views
2

我写的一个应用程序会在发生某个事件时显示气球提示(使用NotifyIcon.ShowBalloonTip())。系统锁定时也会发生这种情况。为什么在屏幕锁定时气球提示会延迟?

在这种情况下,气球提示不会立即显示解锁后或根本不显示 - 这两种情况都会很好,并且有意义。但是,它显示一段时间后 - 有时超过半小时。

这种行为是非常烦人的,我想知道是否有办法来阻止它,除了检查屏幕锁定之前,显示balloontip。

+0

这是新颖的。它必须是环保的。在另一台机器上试用它。这属于superuser.com btw。 –

+0

这是什么为superuser.com?我有这个问题,尤其是我的应用程序创建的气球提示。所以它可能与我正在使用的方法有关。此外,该解决方案也很可能与编程有关...... – ThiefMaster

+0

因为它是环保的。如果您认为它与您展示提示的方式有关,那么您应该发布代码段以帮助我们重现该行为。那会让它成为一个编程问题。 –

回答

1

任务栏通知(这是官方术语)具有与它们相关的棘手逻辑。

  1. 通知显示可以立即,或者从某些状态,如恢复当PC被锁定(或玩全屏游戏)后:

    http://blogs.msdn.com/b/oldnewthing/archive/2005/01/10/349894.aspx

  2. 在Vista和稍后,通知仅显示9秒,并且这是不可调整的:

    http://blogs.msdn.com/b/oldnewthing/archive/2011/05/18/10165605.aspx

  3. 通知气球不显示在所有在第一个小时一个用户登录首次:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ee330740(v=vs.85).aspx

最重要的是,Windows不保证用户将看到它们。在Windows UX Guidelines,他们的状态:

不要假设用户将看到您的通知。用户不会看到 他们:

  • 他们沉浸在他们的工作。
  • 他们没有注意。
  • 他们远离他们的电脑。
  • 他们正在运行一个全屏应用程序。
  • 他们的管理员已关闭其计算机的所有通知。

报告还指出,用户可能看不到中的消息要么,在这种情况下,你应该unqueue你的消息时,他们不再相关。您可以拨打ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None)来完成此操作。我认为这样做是防止显示不相关气球的最佳选择。