Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在长时间运行的流程完成后,如何提醒用户?_C#_Winforms_Alerts - Fatal编程技术网

C# 在长时间运行的流程完成后,如何提醒用户?

C# 在长时间运行的流程完成后,如何提醒用户?,c#,winforms,alerts,C#,Winforms,Alerts,我正在寻找一些想法,以便在winforms应用程序完成长时间运行的进程时提醒用户。这个过程可能需要几分钟或几小时,这取决于他们的输入,而且他们很可能只是最小化应用程序,同时做其他事情。我知道我可以做一些事情,比如播放windows声音,如下所示: System.Media.SystemSounds.Exclamation.Play(); 但是办公室里的大多数用户都没有扬声器,所以我认为这不会很有效 我还可以做些什么来告诉用户:“醒醒!你的数据终于准备好了!” 谢谢 打开一个消息框。。如果应用程

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

System.Media.SystemSounds.Exclamation.Play();
但是办公室里的大多数用户都没有扬声器,所以我认为这不会很有效

我还可以做些什么来告诉用户:“醒醒!你的数据终于准备好了!”


谢谢

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

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

一些想法:

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

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

您不需要扬声器来执行


Console.Beep()

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

这样做的优点是可以立即向用户发出警报,而无需依赖用户计算机上可能存在或可能不存在的声音,也无需消息框的侵入性


…除了您可能会说“流程已完成”之外:-)

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

MessageBox.Show有什么问题(“醒醒!!!您的数据终于为您准备好了!!)?您应该(从办公室)呼叫MessageBox.Show()需要时在不同的线程上?记住将其命名为MessageBox.Show(this,message);获得最完整答案奖。我最终加入了其中的一些功能,包括声音、notifyIcon和窗口闪光灯。我是否可以保持气球打开直到用户单击它,即防止它褪色?