【问题标题】:Why are balloontips delayed when the screen is locked?为什么屏幕锁定时气球提示会延迟?
【发布时间】:2011-08-20 08:05:51
【问题描述】:

当某个事件发生时,我编写的应用程序会显示一个气球提示(使用NotifyIcon.ShowBalloonTip())。这也可能在系统锁定时发生。

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

这种行为非常烦人,我想知道除了在显示气球提示之前检查屏幕是否被锁定之外,是否有办法阻止它。

【问题讨论】:

  • 这很新颖。它必须是环保的。在另一台机器上试试。这属于 superuser.com 顺便说一句。
  • 这对 superuser.com 有什么好处?我有这个问题,尤其是我的应用程序创建的气球提示。所以这可能与我使用的方法有关。此外,该解决方案很可能也与编程相关......
  • 因为它是环保的。如果您认为它与您显示提示的方式有关,那么您应该发布代码 sn-p 以帮助我们重现该行为。那将使它成为一个编程问题。
  • 我确实提到了这个功能。由于它非常简单,因此实际上没有必要发布一个除了调用该函数什么都不做的片段......

标签: .net winforms balloon-tip


【解决方案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 中,他们声明:

不要假设用户会看到您的通知。用户看不到 他们什么时候:

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

它还指出,用户也可能无法及时看到消息,在这种情况下,您应该在消息不再相关时将消息取消排队。您可以通过调用ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None) 来完成此操作。我认为这样做是防止显示无关气球的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多