C#WinForms:创建后台通知应用程序

C#WinForms:创建后台通知应用程序,c#,winforms,windows-services,C#,Winforms,Windows Services,出于实际目的,也是为了学习,我想创建一个通知应用程序来提醒我朋友的生日。我希望应用程序在后台运行,以便它可以根据用户配置的提醒检查当前日期。如果提醒到期,则会向用户显示一个简单的窗口,允许他们打盹或取消通知。我希望应用程序具有特定于用户的通知(即,当用户B登录时,不会看到用户A的通知) 选项1-Windows启动时启动的应用程序: 我想通过检查何时只在应用程序启动时显示通知来保持简单。然后我会在Windows启动文件夹中放置一个快捷方式。但是,如果电脑处于睡眠状态并每天恢复,这可能不起作用 选项

出于实际目的,也是为了学习,我想创建一个通知应用程序来提醒我朋友的生日。我希望应用程序在后台运行,以便它可以根据用户配置的提醒检查当前日期。如果提醒到期,则会向用户显示一个简单的窗口,允许他们打盹或取消通知。我希望应用程序具有特定于用户的通知(即,当用户B登录时,不会看到用户A的通知)

选项1-Windows启动时启动的应用程序: 我想通过检查何时只在应用程序启动时显示通知来保持简单。然后我会在Windows启动文件夹中放置一个快捷方式。但是,如果电脑处于睡眠状态并每天恢复,这可能不起作用

选项2-应用程序在后台持续运行: 然后,我考虑将应用程序最小化为系统托盘中的一个图标,从而在后台持续运行。然后它会定期检查何时显示通知

选项3-将Windows服务与应用程序一起使用: 然后我考虑使用Windows服务定期检查何时显示通知。显然,Windows服务无法显示UI通知,因此需要使用其他一些通知机制(例如发送电子邮件)。然后可以使用应用程序配置服务使用的设置

还有其他我没有考虑过的更好的选择吗。我目前倾向于在第一次实现中使用选项2,但之后可能会转向更好的解决方案


TIA

您的选项2是最佳选项,因为您的目标是不同的用户及其提醒-您的应用程序在特定用户的上下文中运行,您已经知道需要显示哪些剩余内容。当然,您可以选择第三种方法,但这种方法确实需要更多的时间来编写代码,而且代码本身会更复杂。我会选择第二种选择。由于您的应用程序是WinForms,对于定期检查,我建议您使用System.Windows.Forms.Timer类

顺便说一下,在托盘通知区域中显示图标并不会使应用程序“在后台运行”,它只是一种显示应用程序已启动并正在运行的方便方式

你需要1和2。必须先开始。启动时不显示正确,用户当时有其他计划。