C# 在长时间运行的流程完成后,如何提醒用户?
我正在寻找一些想法,以便在winforms应用程序完成长时间运行的进程时提醒用户。这个过程可能需要几分钟或几小时,这取决于他们的输入,而且他们很可能只是最小化应用程序,同时做其他事情。我知道我可以做一些事情,比如播放windows声音,如下所示:C# 在长时间运行的流程完成后,如何提醒用户?,c#,winforms,alerts,C#,Winforms,Alerts,我正在寻找一些想法,以便在winforms应用程序完成长时间运行的进程时提醒用户。这个过程可能需要几分钟或几小时,这取决于他们的输入,而且他们很可能只是最小化应用程序,同时做其他事情。我知道我可以做一些事情,比如播放windows声音,如下所示: System.Media.SystemSounds.Exclamation.Play(); 但是办公室里的大多数用户都没有扬声器,所以我认为这不会很有效 我还可以做些什么来告诉用户:“醒醒!你的数据终于准备好了!” 谢谢 打开一个消息框。。如果应用程
System.Media.SystemSounds.Exclamation.Play();
但是办公室里的大多数用户都没有扬声器,所以我认为这不会很有效
我还可以做些什么来告诉用户:“醒醒!你的数据终于准备好了!”
谢谢 打开一个消息框。。如果应用程序被最小化,它将在开始栏上闪烁。在任务栏上闪烁窗体如何,就像大多数IM程序在收到新消息时闪烁一样。您需要P/Invoke来获得该功能,但实际上非常简单: 一些想法:
- 已设置动画或已更改的系统托盘图标
- 系统托盘中的“烤面包机”弹出窗口(如Outlook、messenger或某些AV应用程序)
- 任务栏中的闪烁警报
- 发送电子邮件
- 播放声音/音频警报
- 消息框
- 在应用程序底部的状态栏中有一个指示器
其中,我最喜欢系统托盘图标+烤面包机弹出窗口。任务栏中的闪烁警报要求太高,电子邮件延迟太长,需要太多的配置,音频警报有您在问题中提到的问题,消息框阻止其线程的执行,并且状态栏指示器太微妙。您不需要扬声器来执行
Console.Beep()代码>这听起来像是任务栏中通知的理想用例。
这样做的优点是可以立即向用户发出警报,而无需依赖用户计算机上可能存在或可能不存在的声音,也无需消息框的侵入性
…除了您可能会说“流程已完成”之外:-)如果您有开发时间,您可以允许用户自定义他们希望得到通知的方式。MessageBox.Show有什么问题(“醒醒!!!您的数据终于为您准备好了!!)?您应该(从办公室)呼叫MessageBox.Show()需要时在不同的线程上?记住将其命名为MessageBox.Show(this,message);获得最完整答案奖。我最终加入了其中的一些功能,包括声音、notifyIcon和窗口闪光灯。我是否可以保持气球打开直到用户单击它,即防止它褪色?