我正在使用 c# 与 twitter 通信,我需要编写一个日程安排系统来在用户定义的日期发送 twitter 消息。
要发送的消息在带有发送日期和时间的数据库中。
检查数据库以获取预定消息并在时间到达时发送它的最佳方法是什么?
我正在使用 c# 与 twitter 通信,我需要编写一个日程安排系统来在用户定义的日期发送 twitter 消息。
要发送的消息在带有发送日期和时间的数据库中。
检查数据库以获取预定消息并在时间到达时发送它的最佳方法是什么?
您需要多准确的时间?你能不能每 5 分钟轮询一次数据库,说“告诉我所有需要在当前时间 + 5 分钟之前传递的消息”然后全部发送?(当然,在数据库中将它们标记为已发送。)它们是早点还是晚点有关系吗?
您可以在 C# 端进行调度以使其更准确,但除非您真的需要,否则我会坚持使用非常简单的解决方案。
(根据您的数据库,可能有一些巧妙的方法可以触发回调等......但同样,我会坚持使用最简单的解决方案。)
除了 Windows 服务选项(或后台线程)之外,您还可以设置一个计划任务来运行一个应用程序,该应用程序轮询数据库并在每个定义的时间间隔发送一次推文。
如果需要,可以使用 C# 设置Windows 计划,并且手动设置非常容易。
有几种方法可以做到这一点,但我想最好的方法是设置一个Windows 服务,该服务将定期轮询(频率取决于您)数据库以查找任何尚未发送的预定推文。
不用说,您需要处理诸如 Internet 连接或 DB 关闭等情况。
事实上,解决方案在于使用 Windows 服务,但它不能直接与 ASP.NET MVC 应用程序通信。我在 Windows 服务中添加了一个处理任务的 Web 服务和一个 System.Threading.Timer 以定期调用 Web 服务。