【发布时间】:2020-08-19 21:44:35
【问题描述】:
我创建了一个程序,它从数据库中读取任务(发送电子邮件/发送短信等)并在应有的特定时间执行每个任务。该程序工作并执行所有任务。我正在使用错误处理,但我想采取额外的预防措施,因此如果程序因任何原因崩溃,它会通知我并自动重新启动程序并执行因崩溃而未执行的任务。 程序在windows上运行。
编辑: 我将详细解释该程序的工作原理。 该程序不断地从 sql 表中读取,并向一个回答此参数的列表添加提醒: IsExecuted=False 并且 DateTimeStart 距离 DateTime.Now 1 分钟范围内。 一旦我读完表格并将相关提醒添加到列表中。 我执行所有提醒(异步)-> 从列表中删除它们-> 并在 sql 表中更改 IsExecuted=True 以便它不会再次添加它。 发送完所有提醒后,我会无限重复此过程。
实现这一目标的最佳方法是什么?如何创建一个服务/程序,不仅重新启动主程序,还检查哪些提醒应该执行但没有执行?
谢谢。
【问题讨论】:
-
您可以使用windows任务调度程序,放置一个任务来检查您的进程是否正在运行,如果没有重新开始,您可以在用户接受安装您的应用程序的那一刻进行此配置(具有特权用户,使用 msi),用于生成 msi 安装程序,我推荐 wixtoolset (wixtoolset.org)
-
您能告诉我们更多细节吗?你想对那些处理失败的“任务”做什么?您想再次尝试处理它们吗?还是要将它们放入死信队列?您是否考虑过使用 Windows 服务?或者您正在寻找一些自托管解决方案?我们是在谈论 .NET Framework 还是 .NET Core?等等...请给我们更多的细节,以便为您提供帮助。
-
@PeterCsala 嗨,彼得,谢谢。我编辑了这个问题,所以我会更清楚程序是如何工作的。
标签: c# windows service process