C# 在特定时间从数据库执行事件的最佳方法
我的数据库中有一个名为“提醒”的表。所以一排看起来像C# 在特定时间从数据库执行事件的最佳方法,c#,algorithm,scheduled-tasks,C#,Algorithm,Scheduled Tasks,我的数据库中有一个名为“提醒”的表。所以一排看起来像 Id Subject Time 1 "Foo" 2014-14-03 13:30:00 然后我想在2014-14-03 13:30:00上发送一封电子邮件。这样做的最佳方式是什么?我能想到的唯一解决方案是每分钟查询数据库,查看我需要发送哪些电子邮件。现在我需要一个windows服务和我的网站,因为windows服务需要不断运行。我想可能有更好的解决办法。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个
Id Subject Time
1 "Foo" 2014-14-03 13:30:00
然后我想在
2014-14-03 13:30:00
上发送一封电子邮件。这样做的最佳方式是什么?我能想到的唯一解决方案是每分钟查询数据库,查看我需要发送哪些电子邮件。现在我需要一个windows服务和我的网站,因为windows服务需要不断运行。我想可能有更好的解决办法。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西
这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置
您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务
然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间
我希望这能有所帮助。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西 这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置 您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务 然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间
我希望这能有所帮助。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西 这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置 您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务 然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间
我希望这能有所帮助。我可以像排队一样思考。这只是一个想法。嗯,不仅仅是一个队列,更像是一个队列和一个堆栈在一起,是你自己创造的东西 这样,如果添加的新任务的时间少于第一个任务,则可以将此任务放在第一个位置 您可以创建一个队列/堆栈,然后将一个新元素排入队列,并启动一个计时器(或计数器),该计时器使用当前时间与已安排任务的时间之差。这样,您只需要检查其中一项任务 然后,当现在的时间等于队列中的第一个任务时,将此任务出列,并对新任务执行相同的操作。如果队列为空,则不需要对数据库执行任何操作,只需检查第一个任务中的时间
我希望这会有所帮助。您可以使用类库,在服务启动时定期阅读您的表格。您可以使用类库,在服务启动时定期阅读您的表格。您可以使用类库,在服务启动时定期阅读您的表格。您可以使用类库,并在服务启动时定期阅读您的表。我会使用NServiceBus,并有一个循环传奇,从db读取本地消息,并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型执行处理程序。在这里查看第110行,它是如何循环的: 我能想到的其他方法有:
Eric我会使用NServiceBus,并有一个循环传奇,从db读取本地消息并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型处理程序。在这里查看第110行,它是如何循环的: 我能想到的其他方法有:
Eric我会使用NServiceBus,并有一个循环传奇,从db读取本地消息并将需要发生的每件事情发送回总线,例如“发送电子邮件”“运行此脚本”,然后为每种消息类型处理程序。在这里查看第110行,它是如何循环的: 我能想到的其他方法有: