【问题标题】:How can I alert the user after a long running process has finished?长时间运行的进程完成后如何提醒用户?
【发布时间】:2010-12-02 15:10:37
【问题描述】:

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

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

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

还有哪些其他技巧可以告诉用户:“醒醒!!!你的数据终于为你准备好了!!!”

谢谢!

【问题讨论】:

  • MessageBox.Show 出了什么问题("Wake up!!! Your data is ready for you, finally!!!")?
  • 你应该给他们wuphf.com(来自办公室)

标签: c# winforms alerts


【解决方案1】:

一些想法:

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

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

【讨论】:

  • 因最完整的答案而获奖。我最终合并了其中的一些,包括声音、notifyIcon 和窗口闪烁。我可以让气球保持打开直到用户点击它,即防止它消失吗?
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 可能在需要时在不同的线程上调用 MessageBox.Show()?记得把它叫做 MessageBox.Show(this,message);
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      console beep 不需要扬声器...

      Console.Beep();

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-23
          相关资源
          最近更新 更多