为什么在屏幕锁定时,balloontips会延迟?

时间:2011-08-20 08:05:51

标签: .net winforms balloon-tip

我写过的应用程序会在某个事件发生时显示气球提示(使用NotifyIcon.ShowBalloonTip())。系统锁定时也会发生这种情况。

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

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

1 个答案:

答案 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

  4. 最重要的是,Windows不保证用户会看到它们。在Windows UX Guidelines中,他们声明:

      

    不要认为用户会看到您的通知。用户不会看到   他们的时间:

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

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