0

我正在寻找一些想法,以便在 winforms 应用程序完成长时间运行的进程时提醒用户。这个过程可能需要几分钟或几个小时,具体取决于他们的输入,而且他们很可能只是最小化应用程序并同时处理其他事情。我知道我可以做一些像这样播放窗口声音的事情:

System.Media.SystemSounds.Exclamation.Play();

但是办公室里的大多数用户都没有扬声器,所以我认为它不会很有效。

我还可以做哪些其他技术来告诉用户:“醒醒!!!您的数据终于为您准备好了!!!”

谢谢!

4

6 回答 6

3

一些想法:

  • 动画或更改的系统托盘图标
  • 系统托盘中的“烤面包机”弹出窗口(如 Outlook、Messenger 或某些 AV 应用程序使用)
  • 任务栏中的闪烁警报
  • 发送电子邮件
  • 播放声音/音频警报
  • 消息框
  • 在应用底部的状态栏中有一个指示器

其中,我最喜欢弹出的系统托盘图标+烤面包机。任务栏中的闪烁警报要求太高,电子邮件延迟太高,需要太多配置,音频警报有您在问题中提到的问题,消息框阻止其线程的执行,状态栏指示器太微妙。

于 2010-12-02T15:16:38.480 回答
2

这听起来像是任务栏通知区域中通知的理想用例。

这具有立即提醒用户的优点,而无需依赖用户计算机上可能或可能不可用的声音之类的东西,并且没有消息框的侵入性。

通知样本

...除了您可能会说“过程已完成” :-)

于 2010-12-02T15:20:30.353 回答
1

如何让任务栏中的表单闪烁,就像大多数 IM 程序在收到新消息时闪烁一样。您需要 P/Invoke 才能获得该功能,但实际上非常简单:

http://pietschsoft.com/post/2009/01/26/CSharp-Flash-Window-in-Taskbar-via-Win32-FlashWindowEx.aspx

于 2010-12-02T15:16:02.810 回答
1

打开一个消息框..如果应用程序被最小化,它将在开始栏上闪烁。

于 2010-12-02T15:13:01.970 回答
0

您不需要扬声器来发出控制台哔声...

Console.Beep();

于 2010-12-02T15:19:45.847 回答
0

如果您有开发人员,您可以允许用户自定义他们希望收到通知的方式。时间。

于 2010-12-02T16:38:29.937 回答