1

我正在 VB.Net 中编写一个应用程序,用户可以在其中安排将来发送的电子邮件。在应用程序的基本表单关闭后,有没有办法让我的侦听器线程在后台运行?我还需要在系统启动时启动侦听器,但当时不希望打开任何表单。

示例(所需)功能:我早上打开应用程序并安排三封电子邮件,其中一封应在三个小时内发送,另外两封应在明天早上发送。我关闭应用程序。三小时后,第一个发送。一天结束时,我关闭了我的机器。当我明天早上重新打开它时,另外两个在我没有打开应用程序的情况下发送。

我在想我需要将侦听器分成服务,但要确保在走这条路之前没有更简单的方法。

如果我最终有一个单独的服务和应用程序,我可以创建一个安装程序来同时安装两者吗?

4

5 回答 5

4
于 2013-05-22T22:19:43.340 回答
1

如果您只想保持程序运行,您可以为它提供任务栏图标的定义,并使用图标的图形表示应用程序中的状态。它会出现在系统时钟旁边的右侧。

然后,只需重新配置您的开发项目,以便从该图标的菜单触发应用程序关闭事件,而不是关闭表单关闭的事实。

于 2013-05-22T22:20:04.017 回答
1
于 2013-05-22T22:30:12.183 回答
1

我在这里有一个可能的解决方案。在表单关闭事件中,您可以放置​​以下代码:

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Me.Visible = False
    e.Cancel = True
End Sub

这将隐藏表单并允许它在后台运行,直到您关闭计算机。要处理重新启动然后发送电子邮件,我建议将要发送的电子邮件添加到可以在重新启动后访问的文本文件中,然后将程序添加到启动中。更好的解决方案可能是拥有 2 个程序,一个在启动时始终隐藏,每 15 分钟检查一次文本文件(例如),另一个程序在将新电子邮件添加到列表时启动它会在文本文件中附加要发送的新电子邮件。

于 2013-05-22T23:54:31.733 回答
0

(对不起,如果我错了,只是在这里提出一个可能的解决方案)我认为附加一个简单的数据库来保存电子邮件发送计划信息/日期时间并在启动时使用通知图标(或没有通知图标但有一个快捷方式加载应用程序显示用户界面/表单以提供电子邮件和安排信息/日期时间,如果需要 + BackgroundWorker,如果您希望应用程序进入睡眠模式并稍后唤醒它以发送第一封预定电子邮件;X 小时后)。发送第一封电子邮件更新数据库后,然后退出应用程序。在启动时检查数据库以发送第一封电子邮件,如果在发送第一封电子邮件之前电脑启动,则进入睡眠模式。但是,如果第一封电子邮件已经发送,则发送另外两封预定的电子邮件(检查数据库日期时间)。这应该可以完成工作...... :)

于 2013-10-05T05:49:58.530 回答