gpt4 book ai didi

C# NofityIcon 气球提示并不总是在指定时间内消失

转载 作者:太空狗 更新时间:2023-10-30 01:24:52 24 4
gpt4 key购买 nike

我以一种相当简单的方式使用 NotifyIcon。

public class Popup
{
...
private static NotifyIcon ni;

static Popup()
{
ni = new NotifyIcon();
ni.Icon = SystemIcons.Information;
}

public Popup(string nexusKey)
{
...
}

public void make(string text)
{
try
{
...
}
catch
{
ni.Visible = true;
ni.ShowBalloonTip(1000, "Thats the title", text, ToolTipIcon.Info);
}

}
}

问题是,如果我关注的窗口与托管显示气球的进程的窗口不同,“保持事件状态”计时器似乎不会启动。无论如何,关于如何确保气球在 1 秒后消失的任何想法?

最佳答案

此行为的部分原因是 ShowBalloonToolTip 中使用的计时器设计为仅在操作系统检测到用户输入时运行。因此,如果您只是等待气球消失而不实际做任何事情,那么它永远不会超时。

我相信原因是,如果您离开电脑一小时后回来,您就不会错过任何通知。

有一种解决方法,那就是运行一个单独的计时器来切换图标的可见性。

例如:

private void ShowBalloonWindow(int timeout)
{
if (timeout <= 0)
return;

int timeoutCount = 0;
trayIcon.ShowBalloonTip(timeout);

while (timeoutCount < timeout)
{
Thread.Sleep(1);
timeoutCount++;
}

trayIcon.Visible = false;
trayIcon.Visible = true;
}

编辑

啊是的 - 我没有考虑你如何使用它就把它拼凑在一起。如果您希望异步运行它,那么我建议您将计时器放在工作线程中,该工作线程Invokes 一个在完成时切换 trayIcon.Visible 属性的方法。

关于C# NofityIcon 气球提示并不总是在指定时间内消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com